型変換
C言語とその流れにある言語では、キャスト演算子によるキャスト式により、式の右辺値を指定された型に型変換する。この構文をキャストと呼ぶ。C言語のキャスト演算子は、型名を括弧で囲んだ形式 (Type) であり、目的の式に前置する。
C++では従来のC言語形式のキャスト構文のほか、用途および意味を明確にした4つの異なるキャスト構文(static_cast, reinterpret_cast, const_cast, dynamic_cast)が用意されている。C++では意味が曖昧なC言語形式のキャスト構文は推奨されず、状況に応じて4つのキャスト構文を使い分けることが推奨される。
あるクラスDerivedが、二つの基底クラスBase1とBase2を多重継承しているとする。このとき、例えばBase1からBase2のように基底クラスどうしの間で型変換することをクロスキャストという。変換する対象がDerivedのインスタンスであればキャストは成功するが、それは実行時にならないと分からないので、ダウンキャストと同様に安全な型変換ではない。
C++では、ダウンキャストと同じ構文dynamic_castで安全なクロスキャストが行える。
C++/CLIおよびC++/CX(英語版)ではそれぞれ、safe_cast構文によるマネージ型間あるいはWindowsランタイム型間のダウンキャストおよびクロスキャストをサポートし、失敗するとSystem.InvalidCastException例外またはPlatform::InvalidCastException例外がスローされる。