在C++中,static成员属于整个类而不是某个对象。不管类创建了多少对象,static成员只存储一份供所有对象使用。
在使用static成员时,对于它的声明、初始化和使用经常感到困惑,在此结合例子说明,希望能加深读者对于static成员的理解。
类中static成员有两种,一是static成员变量,一种是static成员函数。首先,先分析一下static成员变量。
第一个例子:static、static const、const和枚举的初始化
class classA{const int ciNum;enum{ eNum=10}; //枚举在类声明时初始化int arr[eNum];public:classA():ciNum(10){} //const变量只能在构造函数初始化列表中初始化static int siNum;static const int sciNum=10; //static const可在类声明时初始化static const int sciNumOut;};int classA::siNum=10; //static变量必须在类外面初始化,但不需要加static修饰符const int classA::sciNumOut=10; //static const可在类外面初始化,不加static,但要加cosntint main(){cout<<classA::siNum<<endl;cout<<classA::sciNum<<endl;cout<<classA::sciNumOut<<endl;return 0;}
编译通过
结论1:枚举在类声明时初始化;static const可在类声明中初始化,也可在类外面初始化;const和引用在构造函数初始化列表中初始化;static成员变量只能在类外面初始化
第二个例子:static成员变量的引用
class classA{
版权声明:本文为u010991048原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。