2011-12-19 57 views

回答

4

因爲沒有爲NULL參考:)

+0

其實可能有空引用! – Nawaz 2011-12-19 18:34:09

+1

該代碼將被編譯,但會導致未定義的行爲:'int&i = *((int *)0);'。在(非常罕見的)情況下,'dyanmic_cast'導致未定義的行爲是錯誤的,因爲選擇了無效類型作爲轉換的端點,所以它會拋出一個異常,這是一個定義良好的行爲。 :-) – Omnifarious 2011-12-19 18:55:11

+0

是的,我在這裏尋找更多的高層次原因,詹姆斯坎澤幾乎總結了它,你不能初始化沒有對象的引用來引用它。 – ScarletAmaranth 2011-12-19 18:56:56

3

其實有可能是空引用(或者更確切地說,參考空)沒有這樣的事,但它是不確定的行爲(UB)。由於標準不會定義 UB,所以dynamic_cast拋出非常明確的異常。

+0

Im not following :)請解釋:) – ScarletAmaranth 2011-12-19 18:36:29

+0

對NULL的引用應該是'int const&'類型,但我不認爲這就是你的意思。但是,如果沒有有效的對象來引用它,則無法初始化引用。 – 2011-12-19 18:41:15

+1

@JamesKanze:這就是我的意思。 – Nawaz 2011-12-19 18:42:31

相關問題