类的静态成员变量存储在静态存储区不存储在对象的内存布局(堆或栈)中。
该变量是该类的所有对象所共有的。
它在程序启动时(main函数执行前)完成初始化,在程序结束时才销毁。
可以通过类名::变量名(如MyClass::count)在任何地方访问(前提是public)
如以下代码所示 变量count是类的对象class1和类的对象class2所共有的,因为赋值语句class1.count =20或者class2.count = 30都改变了MyClass::count的值。
特别注意:类外的初始化语句是重要而且必须的(int MyClass::count = 0;)没有它编译将报错。
#include <iostream> class MyClass { public: static int count; // ① 类内声明(只是告诉编译器有这个变量) }; int MyClass::count = 0; // ② 类外定义(真正分配内存并初始化,此处是全局域) int main() { MyClass::count = 10; // 正确访问 std::cout << MyClass::count; // 输出 10 MyClass class1; class1.count = 20; std::cout << MyClass::count; // 输出 20 MyClass class2; class2.count = 30; std::cout << MyClass::count; // 输出 30 return 0; }