「static cast」の版間の差分
提供: C++入門
(ページの作成:「C++のキャストで使われるstatic_cast(静的なキャスト)は、一般的なキャストを行います。intからlong、intからdouble、列挙...」) |
|||
行6: | 行6: | ||
== 概要 == | == 概要 == | ||
+ | C++の[[static_cast]]は、静的な型の式を別の静的な型のオブジェクトの値に変更します。 | ||
+ | 式vを型Tに変換します。 | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | static_cast<T><v>; | ||
+ | </syntaxhighlight> | ||
+ | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
int i = 0; | int i = 0; | ||
行12: | 行18: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
コンパイル時に評価され、キャストできない場合は、コンパイルエラーになります。 | コンパイル時に評価され、キャストできない場合は、コンパイルエラーになります。 | ||
+ | |||
+ | [[static_cast]]は、char*からconst char*に変換できます。しかし、const char * から char* に変換できません。その場合は、[[const_cast]]を使用してください。 | ||
+ | |||
== static_castの使用例 == | == static_castの使用例 == | ||
=== ソースコード static_cast.cc === | === ソースコード static_cast.cc === |
2014年1月2日 (木) 23:06時点における最新版
C++のキャストで使われるstatic_cast(静的なキャスト)は、一般的なキャストを行います。intからlong、intからdouble、列挙型からintなどの型変換です。 int*からchar*などのポインタ型の変換は行えません。ポインタ同士のキャストには、reinterpret_castを使用します。
読み方
- static_cast
- こんすと きゃすと
概要
C++のstatic_castは、静的な型の式を別の静的な型のオブジェクトの値に変更します。 式vを型Tに変換します。
static_cast<T><v>;
int i = 0; double d = 1.2; i = static_cast<int>(d);
コンパイル時に評価され、キャストできない場合は、コンパイルエラーになります。
static_castは、char*からconst char*に変換できます。しかし、const char * から char* に変換できません。その場合は、const_castを使用してください。
static_castの使用例
ソースコード static_cast.cc
#include <iostream> #include <cstdlib> using namespace std; int main (int argc, char *argv[]) { int i = 100; long l = static_cast <long> (i); exit (EXIT_SUCCESS); }
コンパイル
g++ static_cast.cc -o static_cast
実行例
特に出力はありません。
% ./static_cast
関連項目
- キャスト
- const_cast
- dynamic_cast
- reinterpret_cast
- static_cast
- std::static_pointer_cast
- std::const_pointer_cast
- std::dynamic_pointer_cast