类中所有对象所共有的,只分配一次内存
在全局区分配内存,不占用对象的内存,sizeof不计算静态成员变量
#include
using namespace std;class A
{
public:
private:int a;static int b;
};int main(int argc, char **argv)
{A a;cout << "sizeof a = " << sizeof(a) << endl;return 0;
}输出: sizeof a = 4
类的静态成员变量不能在初始化列表里初始化,也不能在声明的时候初始化,只能在类外初始化
class A
{
public:A() : a(5) /* , b(2) */ {}// error: ‘int A::b’ is a static data member; it can only be initialized at its definitionprivate:int a = 1;static int b;/* static int b = 2;error: ISO C++ forbids in-class initialization of non-const static member ‘A::b’*/
};int A::b = 2; // 正确
静态成员变量属于声明的类,不属于某个对象,所以既可以采用对象方式访问,也可以采用类名加::的方式访问
A a;
cout << "b = " << a.b << endl;
cout << "b = " << A::b << endl;
静态数据成员和普通函数一样遵循public、protected、private访问规则
下一篇:计算机网络学习心得