Переносимо безопасно передавать 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 либо пустое, либо действительное, то есть не wild указывает на мусор ...

62
задан sdg 1 March 2011 в 14:27
поделиться