【发布时间】:2012-08-24 03:05:12
【问题描述】:
换句话说,为什么编译器会抱怨这样的事情:
class Integer {
int i = 3;
};
虽然这是一个非常愚蠢的例子,但在很多情况下,类的成员可以默认初始化为某个值(例如,某些内部计数器总是默认初始化为零)。在类构造函数之外禁止这些默认初始化的原因是什么?
【问题讨论】:
-
这在 C++11 中很好。要搜索的术语是“类内成员初始化”。
-
因为 C++ 语言委员会没有决定添加该功能?
-
@Adam :嗯,他们确实决定这样做,只是比我们希望的晚了 13 年。 :-P
-
@paulsm4 我看不出类内成员初始化程序如何将其带走。
-
类内初始化不会改变不变条件,它只是在许多构造函数中设置这些条件的更好方法,而无需从每个构造函数调用 init() 函数的开销一。
标签: c++