c++4種類の強制変換

1092 ワード

static_cast:C++に組み込まれた基本データ型間の相互変換を実現できます.クラスに触れるとstatic_castは相互に関連するタイプでのみ相互変換でき,必ずしも虚関数を含まない.
const_cast: const_cast操作は異なる種類間で変換できません.逆に、1つの作用する式を定数に変換するだけです.本来constタイプではないデータをconstタイプに変換したり、constプロパティを削除したりすることができます.
reinterpret_cast:Cスタイルの強制転換と同じ能力を持っています.内蔵されたデータ型を他のデータ型に変換したり、ポインタ型を他のタイプに変換したりすることができます.組み込みのデータ型をポインタに変換することもでき、タイプのセキュリティや定数を考慮する必要はありません.やむを得ず絶対に使わない.
dynamic_cast:
(1)他の3種類はすべてコンパイル時に完成したもので、dynamic_castは実行時に処理され、実行時にタイプチェックが行われます.
(2)組み込みの基本データ型の強制変換には使用できません.
(3)dynamic_cast変換が成功するとクラスへのポインタや参照が返され、変換に失敗するとNULLが返されます.
(4)dynamic_の使用castが変換する場合、ベースクラスには必ず虚関数があります.そうしないと、コンパイルは通過しません.
    B            :       ,                         ,        。

                        ,              (         ,    <Inside c++ object model>) ,

                    。

(5)クラスの変換時にクラス階層間で上り変換を行う場合dynamic_キャストとstatic_キャストの効果は同じです.下り変換時にdynamic_castにはstatic_よりもタイプチェック機能があります.castの方が安全です.アップコンバージョンとは、親ポインタが子ポインタに変換されるサブクラスオブジェクトへのダウンコンバージョンです.変換が成功したかどうかは、変換するポインタが指すオブジェクトの実際のタイプが変換後のオブジェクトのタイプと同じでなければ、変換に失敗します.