Согласно тому, что я прочитал, при выполнении неправильного динамического выполнения во время выполнения может возникать исключение 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;
}