【发布时间】:2016-02-25 04:46:56
【问题描述】:
考虑到这个程序:
#include <iostream>
class C
{
public:
C(void): a(1)
{ a=2; }
int a{3};
};
int main(void)
{
C c{};
std::cout << c.a; // 2
}
我可以看到三种形式的数据成员初始化:
- 使用成员初始化器列表
- 使用构造函数
- 在类主体中使用声明
什么时候用哪个?
【问题讨论】:
-
不,你有初始化列表、构造函数和 default 值。
int a{3}仅在您不为给定构造函数指定初始化程序时适用。由于您指定了: a(1)(也可以写成: a{1}),因此默认值被1而不是3覆盖。
标签: c++ class initialization data-members