C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++の型キャスト演算子とは?4種類の特徴と使い方を徹底解説

型キャスト(キャスト)とは

キャストとは、あるデータ型を別のデータ型へ強制的に変換するための特殊な演算子です。演算子としてのキャストは単項演算子であり、他の単項演算子と同じ優先順位を持ちます。

ほとんどのC++コンパイラでサポートされている、最も一般的なキャストの書式は次のとおりです。

(type) expression

ここで type は変換後のデータ型を表します。C++にはこれ以外にも、目的に応じて使い分けられる4つのキャスト演算子が用意されています。

C++の4つのキャスト演算子

1. const_cast<type>(expr)

const_castは、キャスト時に constvolatile 属性を明示的に上書き(追加・解除)するための演算子です。変換先の型は、const/volatile属性の違いを除いて元の型と同一である必要があります。主に、渡されたオブジェクトのconst属性を操作して設定または解除するために使われます。

2. dynamic_cast<type>(expr)

dynamic_castは、実行時(ランタイム)にキャストの妥当性を検証するキャストです。変換が不可能な場合はキャストが失敗し、式はnull(ヌルポインタ)と評価されます。dynamic_castは多態性(ポリモーフィズム)を持つ型に対して使用され、A*型のポインタをB*型のポインタに変換できるのは、指し示すオブジェクトが実際にB型である場合のみです。

3. reinterpret_cast<type>(expr)

reinterpret_castは、ポインタを任意の別の型のポインタへ変換する演算子です。さらに、ポインタから整数型への変換、およびその逆の変換も可能にします。

4. static_cast<type>(expr)

static_castは、非ポリモーフィックな(静的な)キャストを行う演算子です。たとえば、基底クラスのポインタを派生クラスのポインタへ変換する際などに使用できます。

サンプルコードで学ぶ基本的なキャスト

上記の4つのキャスト演算子は、クラスやオブジェクトを扱う場面で活用されるものです。まずは、C++で利用できるシンプルなキャストの動きを、次のサンプルコードで確認してみましょう。下記のC++プログラムをtest.cppというファイルにコピー&ペーストし、コンパイルして実行してください。

コード例

#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

この例では、double型の値21.09399をint型にキャストすると小数点以下が切り捨てられて21になり、float型の10.20も同様に10へ変換されていることがわかります。このように、Cスタイルのキャスト「(int)」を使うことで、数値型同士の明示的な型変換が可能になります。実務では、より安全で意図が明確なstatic_castなどのC++形式のキャスト演算子を使うことが推奨されています。

  1. C/C++の型キャストとは?基礎から整数昇格・通常の算術型変換まで解説

    型キャスト(型変換)とは、あるデータ型の変数を別のデータ型へ変換する手法のことです。例えば、long型の値を単純なint型の変数に格納したい場合、longをintへキャストすることができます。値をある型から別の型へ明示的に変換するには、キャスト演算子を次の形式で使用します。(型名) 式キャスト演算子の使用例次の例では、キャスト演算子によって整数変数同士の除算が浮動小数点演算として実行されます。#include <stdio.h> main() { int sum = 17, count = 5; double mean; mean = (double) su

  2. C++の算術演算子入門!基本の5つの演算子と複合代入演算子の使い方

    C++の基本的な算術演算子 C++には、数値計算のために用意された基本的な算術演算子が5つあります。それぞれ以下の通りです。 加算(+) 減算(-) 乗算(*) 除算(/) 剰余(%) 使用例 これらの演算子は、C++のあらゆる算術演算に使用できます。実際にどのように動作するのか、以下のサンプルコードで確認してみましょう。 #include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c; c = a + b; cout <&l