ste*_*lla 9 c++ initialization
我写了以下代码:
struct A{
int a;
int b;
A(int c): a(c), b(a){ }
};
int main()
{
A b(10);
}
Run Code Online (Sandbox Code Playgroud)
现在,我不确定b用aas 初始化a(c), b(a).可以这样做还是可能导致UB?
Vau*_*ato 11
是的,这没关系.成员按照在类中声明的顺序进行初始化.请注意,初始化程序的顺序无关紧要,因此这也可行(但不是好的做法):
struct A{
int a;
int b;
A(int c): b(a), a(c) { }
};
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
struct A{
int b;
int a;
A(int c) : a(c), b(a) { }
};
Run Code Online (Sandbox Code Playgroud)
如果初始化程序订单与声明顺序不匹配,某些编译器会向您发出警告.