g++ -Wreorder のポイントは何ですか? 質問する

g++ -Wreorder のポイントは何ですか? 質問する

g++ -Wall オプションには -Wreorder が含まれています。このオプションの機能については、以下で説明します。なぜ誰かが気にするのか (特に、-Wall でこれをデフォルトでオンにするほど) は私にはわかりません。

-Wreorder (C++ のみ)
  コード内で指定されたメンバー初期化子の順序が
  実行順序と一致します。例:

    構造体A{
      整数 i;
      整数j;
      A(): j (0), i (1) { }
    };

  コンパイラはiとjのメンバー初期化子を次のように再配置します。
  メンバーの宣言順序と一致し、そのメンバーに警告を発する
  効果。この警告は -Wall によって有効になります。

ベストアンサー1

考慮する:

struct A {
    int i;
    int j;
    A() : j(0), i(j) { }
};

現在はiゼロではなく、何らかの不明な値に初期化されています。

あるいは、の初期化iには順序が重要となる副作用があるかもしれません。例:

A(int n) : j(n++), i(n++) { }

おすすめ記事