私は最近、私のアプリケーションのバグを修正しました。問題は、スタック上にあるオブジェクトのフィールドが初期化されていないままだったということでした。
オブジェクトには、次のタイプのクラス宣言がありました:
struct A{
int somefield, someotherfield;
A(): someotherfield(0) {}
}
A var;
また、(関数のように) ローカル変数を宣言するときは、somefield
初期化されていないため、それを読み取るとランダムな値が返されます。
コンストラクターの初期化リストに表示されないクラスのフィールドは、合成された自明なコンストラクター (int の場合はゼロ値) によって常に初期化されると確信していました。明らかに私は間違っています。
では、暗黙的なフィールドの初期化に関する一般的なルールは何ですか?