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 の答えを作成します。 なぜなら、j と v の両方とも整数であるからです。 逆に、d = static_cast<float>(j)/v; は、型 float の答えを作成します。 static_cast 演算子は、変数 j を、型 float に変換します。 これによって、コンパイラーは、型 float の答えを持つ割り算を生成できます。 すべての static_cast 演算子は、コンパイル時に解決します。 そして、どの const または volatile 修飾子も除去しません。
static_cast 演算子をヌル・ポインターに適用すると、 その演算子は、ターゲット型のヌル・ポインター値に変換されます。
A が B の基底クラスであれば、 型 A のポインターを型 B のポインターに、明示的に変換できます。 A が B の基底クラスでなければ、コンパイラー・エラーになります。
以下が true であれば、型 A の左辺値を、型 B& にキャストすることができます。
結果は、型 B の左辺値になります。
メンバー型を指すポインターは、別のメンバー型を指すポインターへ明示的に変換できます。 ただし、両方の型が、同じクラスのメンバーを指すポインターである場合に限ります。 明示的変換のこの形式は、メンバー型を指すポインターが、 別のクラスからのものである場合に行われることがあります。 ただし、クラス型のうちの 1 つは、他のものから派生していなければなりません。
関連参照