①对于静态数据成员,是类的成员,而不是对象的成员
②静态数据成员必须在类外初始化,初始化格式如下:
<数据类型> <类名>::<静态数据成员名>=<值>;
注意:在初始化时不需要再写static
class CStudent{
public:
CStudent(int a=0);
~CStudent();
static int nTotalObj; //静态数据成员
private:
int age;
};
static int CStudent::nTotalObj = 0; //初始化加上static
编译结果:

③可以通过类名访问静态数据成员,也可以通过对象名访问静态数据成员;
int main()
{
CStudent c1;
cout<<CStudent::oTotalObj;
cout<<c1.oTotalObj;
return 0;
}
④静态数据成员的访问依然受private约束
如下:
将上述类的静态数据成员声明为private:
class CStudent{
public:
CStudent(int a);
~CStudent();
private:
int age;
static int nTotalObj;
};
int main()
{
cout<<"CStudent::nTotalObj="<<CStudent::nTotalObj<<endl;
return 0;
}
编译结果:

故:静态数据成员的也是受private约束的。
本文深入探讨了C++中静态数据成员的概念,包括其作为类而非对象成员的特性,外部初始化的格式与方法,以及如何通过类名或对象名进行访问。同时,强调了静态数据成员同样受到private权限修饰符的约束。

1174

被折叠的 条评论
为什么被折叠?



