15
根据我所读到的,执行错误的运行时dynamic_cast可以抛出bad_cast异常或返回零。dynamic_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;
}
这是编译时错误,所以肯定是正确的。谢谢。我编辑了消息,以便使基类具有多态性(添加虚函数)并使用引用投射来抛出异常。 – NIGO