https://www.cnblogs.com/zhaobinyouth/p/6340008.html
为什么static数据成员一定要在类外初始化
这是因为被static声明的类静态数据成员,其实体远在main()函数开始之前就已经在全局数据段中诞生了(见《Inside The C++ Object Model》page247)!其生命期和类对象是异步的,(而且静态语意说明即使没有类实体的存在,其静态数据成员的实体也是存的)这个时候对象的生命期还没有开始,如果你要到类中去初始化类静态数据成员,让静态数据成员的初始化依赖于类的实体,,那怎么满足前述静态语意呢?难道类永远不被实例化,我们就永远不能访问到被初始化的静态数据成员吗
静态成员变量隶属于类,不是某个对象,所以静态成员变量不可能占用某一个对象的存储空间,所以静态成员需要再类外部定义,以便静态成员变量在全局数据区分配其存储空间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
static const int可以在类里面初始化,因为它既然是const,那程序就不会再去试图初始化