reinterpret_cast
http://www.geocities.jp/ky_webid/cpp/language/024.html
reinterpret_castというキャストが出てきました。
これなんて読むんでしょうか。りいんたーぷれっと?
日本語読みは再解釈キャストというらしいです。
異なる型同士へのキャストを行えるようです。C言語的なキャストまんまですね。
ほとんどの使い道としては整数値をアドレスとみなしてポインタ変数へ代入したいとかですかね。
#include <iostream> using namespace std; int main () { int i = 123456; // pポインタのアドレスを123456へ向ける int* p = reinterpret_cast<int*>( i ); return 0; }
ポインタ型から別のポインタ型への変換でもreinterpret_castが使えますが、void*型から別のポインタ型への変換の場合はstatic_castでもコンパイルエラーとならずに変換できるので、そのケースではstatic_castを使ったほうが良いようです。
#include <iostream> using namespace std; int main () { int* i = new int(9); void* p = i; float* f = static_cast<float*>( p ); return 0; }