我想知道这段代码有没有区别:
class Foo{
private:
int a = 0;
public:
Foo(){}
}
还有:
class Foo{
private:
int a;
public:
Foo(): a(0) {}
}
那么,如果是这样的话,应该选择哪一个呢?我知道使用初始化列表比在构造函数体中进行赋值更好,但是对于初始化列表和直接在字段声明中进行初始化的情况(至少对于原始类型来说,就像这里的情况一样),该如何选择呢?
此外,下面的情况怎么办:
class Foo{
private:
int a = 0;
public:
Foo(){}
Foo(int i): a(i) {}
}
当调用非默认构造函数时,变量"a"会被初始化两次吗?首先是被初始化为0,然后再被初始化为"i",还是直接被初始化为"i"?