reinterpret_cast 演算子
ポインターが他のポインター型に変換します。は整数型を指すポインター型への変換およびその逆の変換します。
reinterpret_cast < type-id > ( expression )
解説
reinterpret_cast の演算子の使用法は簡単に安全です。目的の変換が本来低いレベルにある他のキャスト演算子の 1 種類を使用する必要があります。
reinterpret_cast の演算子は本質的に安全でない Unrelated_class* への One_class* 使用できます。int* への char* などの変換にします。
reinterpret_cast の結果は元の型へのキャスト以外に安全に使用できます。他の使用は精々nonportable です。
reinterpret_cast の演算子は 定数 volatileまたは __unaligned の属性をキャストすることはできません。これらの属性の削除の詳細についてはconst_cast の演算子 を参照してください。
reinterpret_cast の演算子は変換先の型の null ポインター値は null ポインターの値に変換します。
reinterpret_cast の 1 種類の実際の使用方法ではインデックスに値を割り当てるハッシュ関数を 2 回異なる値が同じインデックスにあまり終らないです。
// expre_reinterpret_cast_Operator.cpp
// compile with: /EHsc
#include <iostream>
// Returns a hash code based on an address
unsigned short Hash( void *p ) {
unsigned int val = reinterpret_cast<unsigned int>( p );
return ( unsigned short )( val ^ (val >> 16));
}
using namespace std;
int main() {
int a[20];
for ( int i = 0; i < 20; i++ )
cout << Hash( a + i ) << endl;
}
reinterpret_cast はポインターが整数型として処理されるようにします。結果はそのものの XORed 一意のインデックス (ビットをシフトされ可能性の高い固有の) に生成します。インデックスは関数の戻り値の型への標準の C スタイルのキャストにより切り捨てられます。