必须完成c ++中的类成员初始化列表吗?或者他们可以简单地初始化一个类中的一个或两个成员数据吗?
提前感谢!
答案 0 :(得分:5)
他们不一定要完整。您可以省略默认可构造的基类和非POD类类型,但POD类型将保持未初始化状态。
显然,常量成员和引用已在成员初始化列表中初始化。
答案 1 :(得分:1)
int
有一个构造函数,参见Stroustrup C ++编程语言第6.2.8节
int j = int();
这会将j初始化为0(显式使用内置类型的构造函数的值为0转换为该类型,因此int()是另一种写入0的方法。 内置类型的默认构造函数非常重要,因此模板可以无需担心地调用默认构造函数,即使对于内置类型也是如此。
答案 2 :(得分:0)
不,它们不必是完整的 - 任何未在其中指定的成员都将是默认构造的(这包括任何基类)。
显然,任何不可默认构造的成员都必须显式初始化。并且一些小的陷阱 - 类型如整数或浮点数等将不会被初始化,因此它们的初始值将是未定义的。