私はそのような構造体を書きました... C++ 11で
struct StackOverflow
{
int x;
StackOverflow(){}
StackOverflow(int x) { x = x; }
};
後者のコンストラクターを次のように書くべきだったことはわかっていますがStackOverflow(int x) : x(x) {}
、何かを学んだので、この場合はそうしなかったことをうれしく思います。
C++11 コンパイラは、ステートメントで正しい処理{x = x;}
を行いませんでした。実際、構造体メンバーx
は初期化さえされませんでした (アプリケーションが失敗した理由をデバッグしているときに、ランダムな値がありました)。また、コンパイラの警告は表示されませんでした。
これはうまくいくはずではありませんか?