reinterpret_cast operador
Permite que qualquer ponteiro para ser convertido em qualquer outro tipo de ponteiro.Também permite que qualquer tipo integral a ser convertido em qualquer tipo de ponteiro e vice-versa.
reinterpret_cast < type-id > ( expression )
Comentários
O mau uso o reinterpret_cast operador pode ser facilmente inseguro.A menos que a conversão desejada inerentemente baixo nível, você deve usar um dos outros operadores de conversão.
O reinterpret_cast pode ser usado para conversões, como char* para int*, ou One_class* para Unrelated_class*, que são inerentemente inseguros.
O resultado de uma reinterpret_cast não pode ser usado com segurança para nada além do que está sendo lançado de volta ao seu tipo original.Outros usos são, na melhor das hipóteses, nonportable.
O reinterpret_cast operador não é possível converter fora do const, volatile, ou __unaligned atributos.Consulte const_cast operador para obter informações sobre como remover esses atributos.
O reinterpret_cast operador converte um valor de ponteiro nulo para o valor de ponteiro nulo do tipo de destino.
Um uso prático de reinterpret_cast está em uma função de hash, que mapeia um valor a um índice de tal forma que distintas dois valores raramente final até com o mesmo índice.
// 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;
}
O reinterpret_cast permite que o ponteiro deve ser tratado como um tipo integral.O resultado, em seguida, é deslocado bit e XORed si mesma para produzir um índice exclusivo (exclusivo para um alto grau de probabilidade).O índice é truncado, em seguida, um C-estilo padrão convertido para o tipo de retorno da função.