說我有類層次結構:在C++ 11中,失敗的dynamic_cast是否返回NULL或std :: nullptr?
class Base{
}
class Derived : public Base{
}
假設我要檢查的對象是類型派生與否:
Base* b = new Base();
Derived* d = dynamic_cast<Derived*>(b);
if(b!=nullptr){ //Should this check be for 0, NULL or nullptr ?
// b is not Derived
}
我應該測試爲0,在C NULL或nullptr ++ 11?
找到答案(對不起,我通過谷歌搜索它沒有顯示出來) In c++11, does dynamic_cast return nullptr or 0?
無論你應該測試'nullptr'以便與代碼讀者進行最清楚的交流,這就是數字機器代碼之上的語言編程的全部內容。 –
失敗的'dynamic_cast '不會返回0,NULL或nullptr。它返回一個空的'Base *'。但是這與你應該將其與哪三個比較的問題無關。 –
@BenjaminLindley那麼爲什麼有些人在測試dynamic_cast是否有效時檢查0? –