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