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; }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了