使用初始化列表时的c ++数据成员初始化顺序

Med*_*ine 4 c++ constructor initializer-list

class A
{
private:
int a; 
int b; 
int c;

public:
A() : b(2), a(1), c (3)
{
}
};
Run Code Online (Sandbox Code Playgroud)

根据C++标准,数据成员是按照声明的顺序构造和初始化的,对吗?

但是当使用初始化列表时,我们正在改变数据成员的顺序,现在它们是按照初始化列表的顺序还是声明的顺序初始化?

Jes*_*ood 7

按声明顺序,初始化列表中的顺序无关紧要.有些编译器实际上会给你警告(gcc),告诉你初始化列表顺序与声明顺序不同.这就是为什么当你使用成员初始化其他成员等时你也必须要小心.