2

在没有任何虚函数的类层次结构中,将dynamic_cast表现为简单static_cast,因为它没有为 RTTI 存储任何信息,还是会出错?

4

1 回答 1

8

很容易检查:

class A {};
class B : public A {};

int main(int argc, char **argv) {
  A* a = new B();
  B* b = dynamic_cast<B*>(a);
}

G++ 说:

error: cannot dynamic_cast 'a' (of type 'class A*') to type 'class B*' (source type is not polymorphic)

顺便说一句,对于这类问题,我发现在线 llvm-gcc 演示很有用。

于 2011-01-26T15:12:16.010 回答