7

C++11 は、次のように、宣言時のクラス メンバー フィールドの値の設定をサポートするようになりました。

class MyClass
{
private
  int test = 0;
}

次のようにコンストラクターで変数も初期化すると、次のようになります。

class MyClass
{
private
  int test = 0;

public:
  MyClass() : test(1)
  {
  }
}

これにより、変数の値が2回設定されますか、それとも仕様では、コンパイラーがこれを最適化して変数を1回だけ初期化する必要があると規定されていますか? 仕様に何も規定されていない場合、これに関する有名なコンパイラ (MSVC、GCC など) の動作を知っていますか?

4

1 に答える 1