式は、どの型のキャストが意図されているかに応じて、 dynamic_cast<T>
、 static_cast<T>
、 static_cast<T>
reinterpret_cast<T>
、またはconst_cast<T>
を使用して明示的に変換したり、型T
キャストできます。
C ++は、関数形式のキャスト表記法T(expr)
とCスタイルキャスト表記法(T)expr
もサポートしています。
(
)
(
式リスト )
(
)
(
式リスト )
dynamic_cast
<
type-id >
(
式 )
static_cast
<
type-id >
(
式 )
reinterpret_cast
<
type-id >
(
式 )
const_cast
<
type-id >
(
式 )
(
型-id )
キャスト式 6つのキャスト記法には共通するものが1つあります。
dynamic_cast<Derived&>(base)
ように左辺値参照型にキャストすると、左辺値が得られます。したがって、同じオブジェクトで何かをしたいが、それを別の型として扱う場合は、左辺値参照型にキャストします。 static_cast<string&&>(s)
ように、 static_cast<string&&>(s)
参照型にキャストすると、 static_cast<string&&>(s)
れます。 (int)x
ように、非参照型にキャストすると、キャストされる値のコピーとして考えられるが、元のものとは異なる型のプリ評価値が生成されます。 reinterpret_cast
キーワードは、2種類の「安全でない」コンバージョンを実行します。
static_cast
キーワードは、さまざまな異なるコンバージョンを実行できます。
ベースからコンバージョンへの変換
暗黙の変換と明示的なコンストラクタまたは変換関数を呼び出す変換の両方を含む、直接初期化によって実行できる変換。詳細はこちらとこちらをご覧ください。
void
の場合は、式の値を破棄します。
// on some compilers, suppresses warning about x being unused
static_cast<void>(x);
算術と列挙型の間、および異なる列挙型間。 列挙型変換を参照
派生クラスのメンバへのポインタから、基本クラスのメンバへのポインタへ。指定された型は一致する必要があります。 メンバーへのポインタのための派生から基底への変換を参照
std::move
ように、左辺値からx値に変換します。 移動セマンティクスを参照してください。