static_cast 演算子

C++static_cast 演算子 は、与えられた式を指定された型に変換します。

構文 - static_cast
 
>>-static_cast--<--Type-->--(--expression--)-------------------><
 
 

次に static_cast 演算子の例を示します。

#include <iostream>
using namespace std;
 
int main() {
  int j = 41;
  int v = 4;
  float m = j/v;
  float d = static_cast<float>(j)/v;
  cout << "m = " << m << endl;
  cout << "d = " << d << endl;
}

次に、上記の例の出力を示します。

m = 10
d = 10.25

この例では、m = j/v; は、型 int の答えを作成します。 なぜなら、jv の両方とも整数であるからです。 逆に、d = static_cast<float>(j)/v; は、型 float の答えを作成します。 static_cast 演算子は、変数 j を、型 float に変換します。 これによって、コンパイラーは、型 float の答えを持つ割り算を生成できます。 すべての static_cast 演算子は、コンパイル時に解決します。 そして、どの const または volatile 修飾子も除去しません。

static_cast 演算子をヌル・ポインターに適用すると、 その演算子は、ターゲット型のヌル・ポインター値に変換されます。

AB の基底クラスであれば、 型 A のポインターを型 B のポインターに、明示的に変換できます。 AB の基底クラスでなければ、コンパイラー・エラーになります。

以下が true であれば、型 A の左辺値を、型 B& にキャストすることができます。

結果は、型 B の左辺値になります。

メンバー型を指すポインターは、別のメンバー型を指すポインターへ明示的に変換できます。 ただし、両方の型が、同じクラスのメンバーを指すポインターである場合に限ります。 明示的変換のこの形式は、メンバー型を指すポインターが、 別のクラスからのものである場合に行われることがあります。 ただし、クラス型のうちの 1 つは、他のものから派生していなければなりません。

関連参照

IBM Copyright 2003