我想知道这段代码之间是否有区别:
class Foo{
private:
int a = 0;
public:
Foo(){}
}
Run Code Online (Sandbox Code Playgroud)
和:
class Foo{
private:
int a;
public:
Foo(): a(0) {}
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,哪个应该是首选?我知道最好使用初始化列表而不是在构造函数体中赋值,但是初始化列表与在字段声明中直接初始化相比(对于基本类型,至少如此情况)?
另外,下面的情况如下:
class Foo{
private:
int a = 0;
public:
Foo(){}
Foo(int i): a(i) {}
}
Run Code Online (Sandbox Code Playgroud)
当调用非默认构造函数时:是"a"初始化两次,首先是0再到"i",还是直接到"i"?
c++ ×1