2011-12-19 6 views

答えて

4

がNULL参照:)

+0

実際にはヌル参照がある可能性があります。 – Nawaz

+1

このコードはコンパイルされますが、動作が未定義になります: 'int&i = *((int *)0);'。 'dyanmic_cast'が(まれなケースでは)未定義の動作を引き起こすのは間違っています。無効な型がキャストの終点として選ばれたので、代わりに例外がスローされます。これはよく定義された動作です。 :-) – Omnifarious

+0

ええ、私はここで高レベルの理由をもっと探していましたが、James Kanzeはそれをかなり要約しました。オブジェクトを参照せずに参照を初期化することはできません。 – ScarletAmaranth

3

は、実際に(というか、nullに参照)null参照があるかもしれないようなものはありませんが、それは未定義の動作(UB)ですので。標準は UBを定義していないので、dynamic_castは例外をスローします。これはかなり明確です。

+0

私は次のとおりではありません:)説明してください:) – ScarletAmaranth

+0

NULLへの参照にはint型の型がありますが、これはあなたが意味するものではないと思います。ただし、参照が有効なオブジェクトを持たない参照を初期化することはできません。 –

+1

@JamesKanze:それは私の言いたいことです。 – Nawaz

関連する問題