20

根据我阅读的内容,执行错误的运行时 dynamic_cast 可能会引发 bad_cast 异常或返回零。

如果你正在转换指针,它会返回零是否正确?

IE:

class Base { virtual void a(){} };
class Derived: public Base {};

int main () {
  Base *base = new Base();
  dynamic_cast<Derived*>(base);
  return 0;
} 

并且在转换对象时会抛出 bad_cast 异常?

IE:

class Base { virtual void a(){} };
class Derived: public Base {};

int main () {
  Base base;
  Base& ref = base;
  dynamic_cast<Derived&>(ref);
  return 0;
}
4

1 回答 1

34

dynamic_cast如果您正在转换指针,则会在错误转换时返回 NULL;它会std::bad_cast在投射引用时抛出。尝试使用(例如,使用)强制转换对象是编译时错误dynamic_castdynamic_cast<Derived>(base)

于 2011-08-30T02:29:07.430 回答