型変換
単一継承の場合はダウンキャストにC言語形式のキャスト構文を使うこともできるが、多重継承の場合はダウンキャストにdynamic_castまたはstatic_castを使う必要があり、またどの基底クラスへのポインタにキャストするかによって結果アドレスが変化しうる。
Javaでは、ダウンキャストに失敗するとjava.lang.ClassCastException例外がスローされる。C++のdynamic_castに相当する機能は存在しないが、instanceof演算子で型情報を問い合わせることはできる。Java 14では、instanceof演算子の機能が拡張され、末尾で宣言した変数に変換結果を格納できるようになった。
C#では、ダウンキャストに失敗するとSystem.InvalidCastException例外がスローされる。参照型またはnull許容型(Nullable型)への変換についてはas演算子が用意されており、変換が失敗した場合はnullが返る。is演算子は、左辺式の型と右辺で指定した型との互換性(変換可能性)をbool型の値で返す。C# 7.0では、is演算子の機能が拡張され、変換可能性をbool値で返すと同時に、末尾で宣言した変数に変換結果を格納できるようになった。C# 9.0以降では、否定パターンis notもサポートされるようになった。as演算子およびis演算子ともに、通常のキャスト演算子とは異なり、ユーザー定義変換は行われない。