Effective C++里有提到,看过的都知道,初始化列表效率>=在函数体里赋值。
但有一点要特别注意,成员变量初始化的顺序取决于声明的顺序,而不是在初始化列表中的顺序。vc不说啥,gcc会报warning。如果遇到初始化有依赖关系的,要特别注意。
如果你的成员是POD类型(Plain Old Data),那么list initialization和constructor initialization没有任何区别,也就是说,
struct A
{
int a;
double b;
A() : a(0), b(0.0) {}
A(int a_in, double b_in) : a(a_in), b(b_in) {}
~A() {}
};
// Equivalent version
struct