अशक्त संकेत की जाँच के लिए आदत से बाहर, मैं कभी कभी लिखा है:पोर्टेबल सुरक्षित/शून्य से गतिशील_कास्ट पास करने के लिए सुरक्षित है?
MyClass * c = someBasePtr ? dynamic_cast<MyClass*>(someBasePtr) : 0;
if (c) {...
वास्तव में, गतिशील कलाकारों को पारित करने, और भी वापसी की जाँच से पहले एक अशक्त सूचक के लिए जाँच।
मैं तो MSDN प्रलेखीकरण
एक नल पॉइंटर मूल्य dynamic_cast द्वारा गंतव्य प्रकार के नल पॉइंटर मूल्य में बदल जाती है में पढ़ा।
ऐसा प्रतीत होता है कि मैं इसे हटा सकता हूं?: सुरक्षित रूप से निर्माण करें। क्या यह सी ++ पोर्टेबल है?
इस तरह की है कि नए कोड
MyClass * c = dynamic_cast<MyClass*>(someBasePtr);
if (c) {...
पाठ्यक्रम यह मानते हुए कि
someBasePtr या तो नल या वैध है के
अर्थात नहीं जंगली कचरा की ओर इशारा करते ...
+1। जैसा कि 5.2.7/4 – Erik