我的大学课程书指出:
当为类声明构造函数时,类对象的初始化变为必需的。
我们可以声明do-nothing构造函数,因此初始化肯定不是强制性的,或者是它?
如果没有,作者是否意味着风格上我们应该在我们明确声明构造函数时初始化类成员,也就是说,它是作为规则还是指南?
答案 0 :(得分:6)
当为类声明构造函数时,类对象的初始化变为必需的。
这是真的,但初始化不必是明确的。请注意术语objects
而不是member
。
如果您没有明确地执行类类型成员,则默认初始化。
class A {};
class B
{
A a;
int x;
B()
{
//a is initialized here, although you didn't do it explicitly
//x is not initialized, nor is it mandatory to initialize it
//but x is not an object
}
};
当然,“强制性”是一个强有力的词。初始化x
并非强制要求,但在您这样做之前,您无法对其进行任何操作。 :)
答案 1 :(得分:6)
我们必须在构造函数中初始化成员,如果:
如果我们不想要任何奇怪的行为,应该初始化成员: