私は値の初期化とデフォルトの初期化の理解を新たにしていて、これに出くわしました:
struct C {
int x;
int y;
C () { }
};
int main () {
C c = C ();
}
どうやらこれはUBです
C()の場合、xおよびyメンバーを初期化できるコンストラクターがあるため、初期化は行われません。したがって、C()をcにコピーしようとすると、未定義の動作が発生します。
理由は理解できたと思いますが、よくわかりません。誰かが詳しく説明してもらえますか?
これもUBだということですか?
int x; x = x;
ちなみに、値の初期化に関して、以下はゼロであることが保証されていますか?
int x = int ();