static_cast 演算子は、expression を type-id 型に変換しますが、変換の安全性を保証する実行時の型チェックはありません。
① クラス階層內(nèi)の基本クラス (親クラス) と派生クラス (サブクラス) の間でポインターまたは參照を変換するために使用されます。
アップストリーム変換 (派生クラスのポインターまたは參照を基底クラス表現(xiàn)に変換する) を?qū)g行しても安全です;
ダウンコンバージョンを?qū)g行する場合 (ポインターまたは參照を基底クラスから派生クラスに変換する)表現(xiàn))、動的型チェックがないため安全ではありません。
出典: http://baike.baidu.com/link?u...
お聞きしたいのですが、太字の部分はどういう意味ですか?安全ではない とはどういう意味ですか?
閉關(guān)修行中......
たとえば、同じ親クラスの異なるサブクラスのオブジェクトを相互に変換する親クラスA
,派生出兩個子類B
和C
,有一個A
類指針或引用a
指向了一個B
類對象b,此時用static_cast
進行下行轉(zhuǎn)換,可以將其轉(zhuǎn)換成C
類的對象(指針或引用),此時就會出現(xiàn)不安全,因為C
類的一些成員函數(shù)/變量對B
類的對象不適用。
簡單來說,就是可以利用static_cast
があるため、型エラーが発生します。
例: