在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,但要加cosnt
int 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 版权协议,转载请附上原文出处链接和本声明。