根据我所读的,执行错误的run-time 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;
}