c++11之前,只有静态常量整型数据成员才可以在类中初始化是为什么

2024-11-28 15:26:19
推荐回答(2个)
回答1:

只有静态常量整型数据成员,才可以在类中初始化。

这是因为,当时认为,类定义中的数据定义,是一种声明,不是数据定义。
当用类 定义对象(变量,常量)时候,才开始定义数据。

静态常量整型数据成员
1)不是对象的一部分
2)可以产生常量表达式,所以可以在类中初始化。---否则,用它作为数组的大小,就不合适了。
静态常量整型数据成员,能够用来当作常量表达式使用,
不在内部定义的话,则该常量表达式未定义,就不能使用了。

C++11 非静态成员变量(常量),可以直接初始化,或者在初始化表中初始化。
C++11 中 初始化非静态成员变量(常量),可以看作赋给变量(常量)一个默认值。

回答2:

好像构造函数里必须初始化变量吧。类只是一个定义,并没有分配内存。假如你对非静态常量整型数据成员初始化,请问,数据值存放在哪里?