根据我读到的,执行错误的运行时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;
}
Run Code Online (Sandbox Code Playgroud)
并且它会在投射对象时抛出bad_cast异常?
即:
class Base { virtual void a(){} };
class Derived: public Base {};
int main () {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
bdo*_*lan 30
dynamic_cast如果要转换指针,则会在错误的转换上返回NULL; 它会std::bad_cast在投射引用时抛出.尝试使用(例如,with )转换对象是编译时错误dynamic_castdynamic_cast<Derived>(base)