static_cast 演算子は、expression を type-id 型に変換しますが、変換の安全性を保証する実行時の型チェックはありません。
① クラス階層内の基本クラス (親クラス) と派生クラス (サブクラス) の間でポインターまたは参照を変換するために使用されます。
アップストリーム変換 (派生クラスのポインターまたは参照を基底クラス表現に変換する) を実行しても安全です;
ダウンコンバージョンを実行する場合 (ポインターまたは参照を基底クラスから派生クラスに変換する)表現)、動的型チェックがないため安全ではありません。
出典: http://baike.baidu.com/link?u...
お聞きしたいのですが、太字の部分はどういう意味ですか?安全ではない とはどういう意味ですか?
仅有的幸福2017-06-05 11:13:51
たとえば、同じ親クラスの異なるサブクラスのオブジェクトを相互に変換する親クラスA
,派生出两个子类B
和C
,有一个A
类指针或引用a
指向了一个B
类对象b,此时用static_cast
进行下行转换,可以将其转换成C
类的对象(指针或引用),此时就会出现不安全,因为C
类的一些成员函数/变量对B
类的对象不适用。
简单来说,就是可以利用static_cast
があるため、型エラーが発生します。
例: