2011-01-26 6 views
2

仮想関数を持たないクラス階層では、dynamic_castはRTTY用に格納された情報を持たないため、単純なstatic_castとして振る舞うか、エラーが発生しますか?仮想関数が1つもない場合、dynamic_castはstatic_castとして動作しますか?

+0

質問には簡単な答えがあります。試してみてください。この特定の質問のテストは簡単です。 –

+0

ええ、私はvitautによって与えられた答えにコメントしたものです。 – rkb

答えて

8

それがチェックするのは簡単です:

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

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

G ++は言う:私はonline llvm-gcc demoが便利質問のこの種のBTW

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

を。

+0

うーん..ありがとう、私は尋ねる前にそれを試みるべきだった。私は今この質問を取り除くべきですか? – rkb

+0

まあ、彼はクラスが仮想関数を使用していた場合、dynamic_castが意味するものは正当なものだと思うポインタをキャストしています。 – rkb

+0

こんにちは、コードをオンラインでコンパイルするリンクをありがとう。時には本当に便利です。 – rkb

関連する問題