C++11 は、次のように、宣言時のクラス メンバー フィールドの値の設定をサポートするようになりました。
class MyClass
{
private
int test = 0;
}
次のようにコンストラクターで変数も初期化すると、次のようになります。
class MyClass
{
private
int test = 0;
public:
MyClass() : test(1)
{
}
}
これにより、変数の値が2回設定されますか、それとも仕様では、コンパイラーがこれを最適化して変数を1回だけ初期化する必要があると規定されていますか? 仕様に何も規定されていない場合、これに関する有名なコンパイラ (MSVC、GCC など) の動作を知っていますか?