出於習慣檢查空指針的,我有時寫:將NULL /零傳遞給dynamic_cast可移植性好嗎?
MyClass * c = someBasePtr ? dynamic_cast<MyClass*>(someBasePtr) : 0;
if (c) {...
實際上,通過對動態轉換,也檢查返回前,檢查空指針。
我然後MSDN文檔
空指針值被轉換爲 由dynamic_cast的所述 目標類型的空指針值中讀出。
看來我可以安全地移除?:構造。這是C++ 便攜式?
使得新代碼將
MyClass * c = dynamic_cast<MyClass*>(someBasePtr);
if (c) {...
當然假設是someBasePtr null或有效的,即不野生指向垃圾...
+1。正如5.2.7/4中所指定的 – Erik 2011-03-01 14:30:46