仮想関数のないクラス階層では、RTTIの情報が格納されていないためdynamic_cast
、単純なものとして動作しますか、それともエラーが発生しますか?static_cast
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 に答える