Cplusplus-cpp-casting-operators
提供:Dev Guides
C ++キャスト演算子
キャストは、1つのデータ型を別のデータ型に強制的に変換する特別な演算子です。 演算子としてのキャストは単項演算子であり、他の単項演算子と同じ優先順位を持ちます。
ほとんどのC ++コンパイラでサポートされている最も一般的なキャストは次のとおりです-
(type) expression
typeは目的のデータ型です。 C ++でサポートされている他のキャスト演算子があり、それらは以下にリストされています-
- * const_cast <type>(expr)*-const_cast演算子は、キャスト内のconstおよび/またはvolatileを明示的にオーバーライドするために使用されます。 ターゲットタイプは、constまたはvolatile属性の変更を除き、ソースタイプと同じでなければなりません。 このタイプのキャストは、渡されるオブジェクトのconst属性を操作して、設定または削除します。
- * dynamic_cast <type>(expr)*-dynamic_castは、キャストの有効性を検証するランタイムキャストを実行します。 キャストできない場合、キャストは失敗し、式はnullと評価されます。 dynamic_castは、多相型のキャストを実行し、A *ポインターをB *ポインターにキャストできるのは、実際にポイントされているオブジェクトがBオブジェクトである場合のみです。
- * reinterpret_cast <type>(expr)*-reinterpret_cast演算子は、ポインターを他のタイプのポインターに変更します。 また、ポインターから整数型へのキャスト、およびその逆も可能です。
- * static_cast <type>(expr)*-static_cast演算子は非多態的なキャストを実行します。 たとえば、基本クラスポインターを派生クラスポインターにキャストするために使用できます。
上記のキャスト演算子はすべて、クラスとオブジェクトを操作するときに使用されます。 今のところ、次の例を試して、C で使用できる単純なキャスト演算子を理解してください。 test.cppファイルに次のC プログラムをコピーして貼り付け、このプログラムをコンパイルして実行します。
#include <iostream>
using namespace std;
main() {
double a = 21.09399;
float b = 10.20;
int c ;
c = (int) a;
cout << "Line 1 - Value of (int)a is :" << c << endl ;
c = (int) b;
cout << "Line 2 - Value of (int)b is :" << c << endl ;
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Line 1 - Value of (int)a is :21
Line 2 - Value of (int)b is :10