C++ 强制转换运算符

C++ 运算符

キャスト演算子は特別な演算子であり、あるデータ型を別のデータ型に変換します。キャスト演算子は単項演算子であり、その優先順位は他の単項演算子と同じです。

ほとんどのC++コンパイラは、一般的なキャスト演算子の大部分をサポートしています:

(type) expression 

ここで、typeは変換後のデータ型です。以下に、C++がサポートする他のいくつかのキャスト演算子を示します:

  • const_cast<type> (expr):const_cast演算子は、型のconst/volatile属性を変更するために使用されます。constまたはvolatile属性以外は、ターゲット型がソース型と同じでなければなりません。この種の変換は主に渡されたオブジェクトのconst属性を操作するために使用され、const属性を追加することも削除することもできます。

  • dynamic_cast<type> (expr):dynamic_cast は実行時に変換を実行し、変換の有効性を検証します。変換が実行されない場合、変換は失敗し、式 expr は null と判定されます。dynamic_cast が動的変換を実行する場合、type はクラスのポインタ、クラスの参照、または void* でなければなりません。type がクラスポインタ型の場合、expr もポインタでなければならず、type が参照の場合、expr も参照でなければなりません。

  • reinterpret_cast<type> (expr):reinterpret_cast演算子は、あるポインタを別の型のポインタに変更します。ポインタを整数に変換したり、整数をポインタに変換したりできます。

  • static_cast<type> (expr):static_cast 演算子は非動的変換を実行し、変換の安全性を保証する実行時クラスチェックはありません。例えば、基底クラスのポインタを派生クラスのポインタに変換するために使用できます。

上記のすべてのキャスト演算子は、クラスとオブジェクトを使用する際に使用されます。では、以下の例を見て、C++ で単純なキャスト演算子をどのように使用するかを理解してください。以下の C++ プログラムを test.cpp ファイルにコピーして貼り付け、プログラムをコンパイルして実行してください。

实例

#include <iostream>
using namespace std;
 
int 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

C++ 运算符

其他扩展