在C++ 11中,我们有两种方法来初始化类/结构的数据成员,如以下示例所示:
struct A
{
int n = 7;
};
struct B
{
int n;
B() : n(7) {}
};
问题1:
哪种方法更好?
问题2:
从现代C++样式检查器的 Angular 来看,是否不鼓励使用传统方法(后者)?
最佳答案
您实际上可以混合两种样式。如果您有多个构造函数,这很有用,但是变量仅由一个或几个构造函数专门初始化。
例
struct A
{
int n = 7;
A() {} // n will be initialized to 7
A(int n_): n{n_} {} // Initialize n to something else
};