4

我的大学课程书指出:

当为类声明构造函数时,类对象的初始化变得强制性。

链接到本书的特定页面。

我们可以声明什么都不做的构造函数,因此初始化肯定不是强制性的,不是吗?

如果不是,作者的意思是说,如果我们显式声明构造函数,我们应该在风格上初始化类成员,也就是说,它是作为规则还是指南?

4

2 回答 2

7

如果出现以下情况,我们必须在构造函数中初始化成员:

  1. 成员没有默认构造函数。
  2. 成员是引用/常量引用。
  3. 成员是常量。(感谢阿努比斯先生)

如果我们不想要任何奇怪的行为,应该初始化成员:

  1. 成员是指针
  2. 成员是标准的吊舱类型
于 2012-08-22T14:52:49.373 回答
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,但在你这样做之前你不能对它做任何事情。:)

于 2012-08-22T14:51:25.787 回答