アップキャスト

アップキャストとは、あるクラスAから派生したクラスBがあるときに、派生クラスから基底クラスへの型変換、すなわちBのインスタンスをAに変換する操作のことです。

Bのインスタンスは必然的にAのインスタンスでもあるので、一般的にはこの変換は安全です。

そのため、多くの言語において、これは暗黙的に行うことができます。

ダウンキャスト

ダウンキャストはアップキャストの逆で、基底クラスから派生クラスへの型変換、すなわちAのインスタンスをBに変換する操作のことです。

Aのインスタンスは必ずしもBのインスタンスとは限らないので、この変換は一般に安全ではなく、エラーが発生する可能性があります。

そのため、多くの言語ではキャスト構文による明示的な変換の記述が必要です。

クロスキャスト

多重継承した親同士のキャストを表します。多重継承可能なプログラミング言語(C++)のみ可能な方法です。

(参考)クロスキャスト-ロベールのC++教室

 

ダウンキャストとポリモーフィズム

ダウンキャスト(あるいはクロスキャスト)が必要になるということは、プログラム設計に問題があることを示唆しています。ポリモーフィズムの使用も検討してください。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です