C.47:メンバーの宣言順にメンバ変数を定義し、初期化します
C.47:メンバ変数と初期化データメンバの声明に従って定義された順序
理由(理由)
混乱やエラーを最小限に抑えるために。すなわち、(メンバ初期化子の順序とは無関係に)初期化が発生する順序です。
混乱やエラーを最小限に抑えます。これ(この順序は、翻訳者注)初期化を実行するために、(順序に依存しないとメンバー初期化子)であります
例えば、悪い(陰性試料)
class Foo {
int m1;
int m2;
public:
Foo(int x) :m2{x}, m1{++x} { } // BAD: misleading initializer order
// ...
};
Foo x(1); // surprise: x.m1 == x.m2 == 2
施行(提案)
リスト初期化子(シンプル)メンバーは、それらが宣言されているのと同じ順序でメンバーを言及する必要があります。
(シンプル)メンバー初期化リストは、それらがメンバー宣言された順序で処理する必要があります。
説明リンク
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c47-define-and-initialize-member-variables-in-the-order-of-member-declaration
私はこの記事は参考になりましだと思いますか?ようこそ親指アップし、より多くの人と共有することができます。
より多くの更新の記事を読む、オブジェクト指向の考え方のマイクロチャンネル公衆数にしてください注意を払います[]