8

boolコンストラクターによって初期化されていないデータメンバーを持つクラスがあります。私が行った場合

cout << x.myBoolDataMember;

xが初期化されていないこのクラスのオブジェクトはどこにありboolますか。0または1ではなく乱数を取得することがあります(使用してgccいます。)この動作は?に準拠していStandardますか?

4

3 に答える 3

10

この動作は標準に準拠していますか?

はい!コードでガベージ値(初期化されていない)を使用すると、未定義動作が呼び出されます

于 2010-01-28T11:40:25.593 に答える
4

はい。初期化されていない変数は任意の値を持つことができます。

于 2010-01-28T11:40:27.793 に答える
0

「<<」演算子がブール値をチェックしないとすぐに、この動作は正しくなります。
ここでの問題はbool自体に隠されています。プログラムはboolを格納するために複数のビットを使用します。これは実装に依存します。ブール値を格納するために1ビットしか使用できない場合があります。
時にはそれ以上、そしてそれはそのような場合です。

于 2010-01-28T13:30:48.787 に答える