构造函数是否忽略了构造函数提供的参数的成员初始化列表的部分?

时间:2014-08-30 23:49:12

标签: c++ constructor

我试图完全理解构造函数在C ++中的工作原理。具体来说,是构造函数的成员初始化列表。

假设你有一个Foobar类,有三个数据成员bar,baz和qux。

我设置了这样的构造函数:

Foobar(int bar, int baz, int qux)
    : bar(bar), baz(baz), qux(qux)
{
  // empty constructor body
}

我的问题是,成员初始化列表是否作为"默认"?或者它总是会发生吗?例如,如果使用参数调用构造函数,是否会忽略初始化列表? 除非另有说明,否则我希望始终将qux数据成员设为0。那么我会将成员初始化行写为:

  : nar(bar), bar(baz), qux(0)

也许我完全误解了成员初始化列表的功能,也许有人可以让我直截了当。

1 个答案:

答案 0 :(得分:1)

不能在没有参数的情况下调用该构造函数,因为它们都是必需的。如果你忘了,编译器会提醒你。

如果您始终希望将成员初始化为固定值,那么这样做的方式正是您所建议的。