質問

私は、コンストラクタで初期化されませんboolデータメンバを持つクラスを持っています。私が行う場合は、

cout << x.myBoolDataMember;

xboolが初期化されていない中で、このクラスのオブジェクトであり、私は時々、むしろ0または1以上の乱数を取得します(私はgccを使用していますが。)Standardこの行動準拠していますか。

役に立ちましたか?

解決

  

標準でこの行動準拠していますか。

はい!あなたのコードを呼び出すで使用してごみ値(初期化されていない)の未定義の動作

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top