c ++成员初始化列表完整性

时间:2010-07-22 22:50:18

标签: c++ list initialization member

必须完成c ++中的类成员初始化列表吗?或者他们可以简单地初始化一个类中的一个或两个成员数据吗?

提前感谢!

3 个答案:

答案 0 :(得分:5)

他们不一定要完整。您可以省略默认可构造的基类和非POD类类型,但POD类型将保持未初始化状态。
显然,常量成员和引用已在成员初始化列表中初始化

答案 1 :(得分:1)

int有一个构造函数,参见Stroustrup C ++编程语言第6.2.8节

int j = int(); 

这会将j初始化为0(显式使用内置类型的构造函数的值为0转换为该类型,因此int()是另一种写入0的方法。 内置类型的默认构造函数非常重要,因此模板可以无需担心地调用默认构造函数,即使对于内置类型也是如此。

答案 2 :(得分:0)

不,它们不必是完整的 - 任何未在其中指定的成员都将是默认构造的(这包括任何基类)。

显然,任何不可默认构造的成员都必须显式初始化。并且一些小的陷阱 - 类型如整数或浮点数等将不会被初始化,因此它们的初始值将是未定义的。