#include<iostream.h> class ceshi{ public: static int i; static int f(){ return i; } }; int ceshi::i=1; class drived:public ceshi{ }; void main(){ cout<<drived::i<<endl; cout<<ceshi::i<<endl; drived::i=2; cout<<drived::i<<endl; cout<<ceshi::i<<endl; cout<<drived::f(); }
static成员受段约束符的限制,基类和派生类共享基类的static成员。要求访问静态成员时,必须使用"类名::成员"显示地说明。
#include<iostream.h> class ceshi{ public: static int i; }; int ceshi::i=1; void main(){ ceshi obj1,obj2; cout<<obj1.i<<endl; cout<<obj2.i<<endl; //obj1.i=2;效果同下 ceshi::i=2; cout<<ceshi::i<<endl; cout<<obj1.i<<endl; cout<<obj2.i<<endl; }
静态数据成员被该类的所有对象共享。无论建立多少个类对象,都只有一个静态数据的存储空间。
静态成员的存储空间必须在类定义外进行分配,具体语法如下:
类型名 类名::静态数据成员[=常量表达式];
静态数据成员的初始化工作不会自动进行(而普通的静态变量若没有显示的初始化,自动初始化为0),因此这个工作是必须的。
原文:http://www.cnblogs.com/leijiangtao/p/4489058.html