キャスト
C++ 言語ではクラスが仮想関数を持つ基本クラスから派生している派生クラスのオブジェクトに存在する仮想関数の実装を呼び出すには基本クラスの型へのポインターを使用できることを示します。含むクラスの仮想関数は「ポリモーフィック クラスと呼ばれます」。
派生クラスが完全に派生したすべての基本クラスの定義を含むためこれらの基本クラスにクラスの階層構造の最上位のポインターにキャスト安全です。ポインターを基本クラスにより下位階層へのポインターにキャスト安全なこともあります。これはポインターが指し示すオブジェクトの基本クラスから派生した型は実際には安全です。この場合実際のオブジェクトでは 「と呼ばれますオブジェクトを」完了します。基本クラスへのポインターは完全なオブジェクトで 「サブオブジェクトに」指すと呼ばれます。たとえば次の図に示すクラスの階層構造を検討してください。
クラスの階層構造
型 C のオブジェクトには次の図に示すように視覚化できます。
12 C のサブオブジェクトとサブオブジェクトのクラスの C
クラス C のインスタンスを指定するとB のサブオブジェクトと A のサブオブジェクトがあります。C のインスタンスはB の A とサブオブジェクトがオブジェクト「」を完了します。
ランタイム型情報を使用して階層構造内の別のオブジェクトをポイントするようにチェックすることが可能かどうかを完全なオブジェクトへのポインターの実際に安全にキャストできます。dynamic_cast の演算子はキャストでこれらの型に使用できます。また操作のセーフにするために必要なランタイム チェックを実行します。
nonpolymorphic 型変換のためにstatic_cast の演算子を使用できます (このトピックではを使用する方が適切な場合)静的および動的キャストの変換の違いを使用します。
ここでは、次のトピックについて説明します。