2

仮想関数のないクラス階層では、RTTIの情報が格納されていないためdynamic_cast、単純なものとして動作しますか、それともエラーが発生しますか?static_cast

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 に答える