C++ 施工期间的初始化?
我编写了以下代码:C++ 施工期间的初始化?,c++,initialization,C++,Initialization,我编写了以下代码: struct A{ int a; int b; A(int c): a(c), b(a){ } }; int main() { A b(10); } 现在,我不确定用a初始化b是否为a(c),b(a)。这样做可以吗?或者可能导致UB?是的,这样做可以。成员按照在类中声明的顺序初始化。请注意,初始值设定项的顺序无关紧要,因此这也会起作用(但不是一种好的做法): 但这是行不通的: struct A{ int b; int a;
struct A{
int a;
int b;
A(int c): a(c), b(a){ }
};
int main()
{
A b(10);
}
现在,我不确定用
a
初始化b
是否为a(c),b(a)
。这样做可以吗?或者可能导致UB?是的,这样做可以。成员按照在类中声明的顺序初始化。请注意,初始值设定项的顺序无关紧要,因此这也会起作用(但不是一种好的做法):
但这是行不通的:
struct A{
int b;
int a;
A(int c) : a(c), b(a) { }
};
如果初始值设定项顺序与声明顺序不匹配,某些编译器会向您发出警告。因此,请按照声明顺序初始化它们,否则您可能会感到困惑。
struct A{
int b;
int a;
A(int c) : a(c), b(a) { }
};