Compartilhar via


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.

Consulte também

Referência

Operadores de conversão

Palavras-chave C++