В соответствии с тем, что я прочитал, выполнение неправильного времени выполнения dynamic_cast может либо вызвать исключение bad_cast, либо вернуть нуль.
Можно ли сказать, что он вернет ноль, если вы нарисуете указатели?
то есть:
class Base { virtual void a(){} };
class Derived: public Base {};
int main () {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}
И что он будет генерировать исключение bad_cast при создании объектов?
то есть:
class Base { virtual void a(){} };
class Derived: public Base {};
int main () {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}