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) { } 
};