static_cast
読み:スタティック-キャスト
外語:static_cast
C++の予約語の一つ。
特徴
次の形で、型キャスト(型変換)に用いる。
static_cast <型> (変数)
変換元から変換先へ、あるいは変換先から変換元へ、例えばint型の値をdouble型の変数に代入する際に行なわれれるような暗黙の型キャストが可能な場合にのみ、型キャストが行なわれる。それ以外はコンパイル時にエラーとなる。
用途
Cの場合は、静的な普通の型キャストが使われる。
unsigned char a;
int b;
a = (unsigned char)b;
このような型キャストは、C++ではstatic_cast演算子を用いる。
a = static_cast<unsigned char>(b)
これを用いても、実行時の安全性までは確認されない。桁あふれの有無、その型キャストが安全かどうか、などである。
但し、実行しなくても分かるような危険な型キャストは、コンパイルエラーになる。例えば、次のような場合はエラーとなる。
- ポインターからintへの変換、あるいはその逆
- intへのポインターからdoubleへのポインターへの変換など互換性のない変換
- 全く無関係のクラスへのポインター同士の型キャスト
このようなチェックをするため、日常的には、型キャストにはstatic_castを用いるべきとされている。
なお、ここでエラーになるような互換性のない型キャストを「強引に」したい場合は、代わりにreinterpret_cast演算子を使う。
再検索