15
私が読んだことによると、間違った実行時のdynamic_castを実行すると、bad_cast例外がスローされるか、ゼロが返されます。dynamic_castはどのように失敗しますか?
ポインタをキャストしている場合、ゼロが返されるとはいいですか?
すなわち:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}
やオブジェクトをキャストするとき、それはbad_cast例外がスローされますこと?
すなわち:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}
[OK]をクリックします。ありがとう。私は基本クラスを多相(仮想関数を追加する)にし、例外をスローするための参照キャストを使うためにメッセージを編集しました。 – NIGO