云行雨施 品物流形

路漫漫其修远兮 吾将上下而求索--军的专栏

C++类中的静态成员

 
为什么静态成员变量要通过类外初始化赋值?
为什么又要在类里面声明这个静态成员?
 
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。
静态数据成员的用途之一是统计有多少个对象实际存在。
静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。
 

#include<iostream.h>

class widget { public:  widget()  {   count++;  }  ~widget()  {   --count;  }  static int num()  {   return count;  } private:  static int count; };

int widget::count=0;

int main() {  widget x,y;

 cout<<"The num is"<<widget::num()<<endl;  if(widget::num()>1)  {   widget x,y,z;   cout<<"the num is"<<widget::num()<<endl;  }  widget z;  cout<<"the num is"<<widget::num()<<endl;

 return 0; }

阅读更多
文章标签: c++
个人分类: 杂项
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭