我试图完全理解构造函数在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)
也许我完全误解了成员初始化列表的功能,也许有人可以让我直截了当。
答案 0 :(得分:1)
不能在没有参数的情况下调用该构造函数,因为它们都是必需的。如果你忘了,编译器会提醒你。
如果您始终希望将成员初始化为固定值,那么这样做的方式正是您所建议的。