为什么我不能在构造函数中初始化我的静态数据成员

mah*_*esh 19 c++

我在parashift中阅读了答案,但我需要详细说明为什么编译器不允许在构造函数中定义静态成员变量.

答案将受到高度赞赏.

谢谢.

Nav*_*een 27

静态成员变量与类的每个对象都没有关联.它由所有对象共享.如果在ctor中初始化,则表示您尝试与特定的类实例关联.由于这是不可能的,因此不允许这样做.


jam*_*lin 5

我认为你指的是在构造函数的初始化列表中使用它.静态数据成员在类的所有实例之间共享.它可以初始化一次(通过初始化的定义),因此为每个实例初始化它是没有意义的.

但是,您可以在构造函数体中为其分配值(或改变现有值).或者,如果数据成员是常量,则可以在构造函数之外静态初始化它.