ash*_*shr 4 c++ constructor initialization class-members
我的大学课程书指出:
为类声明构造函数时,类对象的初始化变为必需的.
我们可以声明do-nothing构造函数,因此初始化肯定不是强制性的,或者是它?
如果没有,那么作者是否应该在风格上意味着我们应该在我们明确声明构造函数时初始化类成员,也就是说,它是作为规则还是指南?
为类声明构造函数时,类对象的初始化变为必需的.
这是真的,但初始化不必是明确的.请注意术语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
}
};
Run Code Online (Sandbox Code Playgroud)
当然,"强制性"是一个强有力的词.初始化并不是强制性的x,但在您这样做之前,您无法对其进行任何操作.:)
我们必须在构造函数中初始化成员,如果:
如果我们不想要任何奇怪的行为,应该初始化成员: