Compartir a través de


operador de reinterpret_cast

Permite que cualquier puntero se convierte en cualquier otro tipo de puntero.También permite a cualquier entero escriba para convertirla en cualquier tipo de puntero y viceversa.

reinterpret_cast < type-id > ( expression )

Comentarios

El uso incorrecto del operador de reinterpret_cast fácil es seguro.A menos que la conversión deseada es inherentemente de bajo nivel, debe utilizar uno de los otros operadores de conversión.

El operador de reinterpret_cast se puede utilizar para las conversiones como char* a int*, o One_class* a Unrelated_class*, que son intrínsecamente no seguras.

El resultado de reinterpret_cast no se puede utilizar con seguridad para algo distinto de convertir a su tipo original.Otros usos son, en el mejor de los casos, nonportable.

El operador de reinterpret_cast no puede convertir fuera const, volatile, o los atributos de __unaligned .Vea operador const_cast para obtener información sobre cómo quitar estos atributos.

El operador de reinterpret_cast convierte un valor de puntero null al valor del puntero NULL del tipo de destino.

Un uso práctico de reinterpret_cast está en una función hash, que asigna un valor a un índice de tal forma que dos valores distintos finalizar raramente hacia arriba con el mismo í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;
}

reinterpret_cast permite que el puntero se tratará como tipo entero.El resultado a bit-se desplaza y XORed con sí misma para mostrar un índice único (único a un alto nivel de probabilidad).El índice se truncado por una conversión estándar de C al tipo de valor devuelto de la función.

Vea también

Referencia

Operadores de conversión

Palabras clave de C++