По привычке для проверки нулевых указателей я иногда писал: MyClass * c = someBasePtr? dynamic_cast (someBasePtr): 0;
if (c) {... Фактически, проверка нулевого указателя ...
Я отказываюсь от этого ... $ 5.2.7 / 2- "Если Т является типом указателя, v должно быть r-значением указателя на полный тип класса, и результатом будет r-значение типа T. Если T - ссылочный тип, v будет ...
Приведенный ниже код объясняет проблему. Заполните same_sub_class, чтобы обнаружить если
два указателя на виртуальный базовый класс A фактически являются одним и тем же конкретным классом. struct A {...
}: struct B: public A {...
Например, у меня есть код, подобный этому классу Base1
{виртуальный void wonderFULL () = 0;
}; класс Base2
{// все эти странные члены
}; класс Derived: общедоступный Base1, общедоступный Base2
{// не так уж и странно ...