在没有任何虚函数的类层次结构中,将dynamic_cast
表现为简单static_cast
,因为它没有为 RTTI 存储任何信息,还是会出错?
问问题
283 次
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 回答