CppCoreGuidelines C.47 按照成员变量的声明顺序进行初始化
14 October 2022
C.47: Define and initialize data members 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
强化
- (简单)成员初始化列表要和成员声明的顺序相同