CppCoreGuidelines C.47 按照成员变量的声明顺序进行初始化
14 October 2022
“Define and initialize member variables in the order of member declaration”
理由
减少混乱和错误。不管你按什么顺序初始化成员变量,最终的初始化顺序都是按照声明顺序进行的。
错误例子
class Foo { public: int m1; int m2; Foo(int x) :m2{x}, m1{++x} { } // BAD: misleading initializer order // ... }; Foo x(1); // surprise: x.m1 == x.m2 == 2 std::cout << x.m1 << " " << x.m2;
2 2
强化
- (简单)成员初始化列表要和成员声明的顺序相同