Condividi tramite


operatore di reinterpret_cast

Consente un puntatore da convertire in qualsiasi altro tipo di puntatore.Consente inoltre a qualsiasi tipo integrale da convertire in qualsiasi tipo di puntatore e viceversa.

reinterpret_cast < type-id > ( expression )

Note

Un utilizzo improprio di reinterpret_cast l'operatore può essere pericoloso.A meno che la conversione desiderata intrinsecamente di basso livello, è consigliabile utilizzare uno degli altri operatori di cast.

reinterpret_cast l'operatore può essere utilizzato per le conversioni come char* in int*, o One_class* in Unrelated_class*, che sono implicitamente non sicuri.

Il risultato di un metodo reinterpret_cast impossibile in modo sicuro essere utilizzato per esclusivamente di eseguire il cast del tipo originale.Altri utilizzi sono, in teoria, nonportable.

reinterpret_cast l'operatore non può eseguire il cast di const, volatile, o __unaligned attributi.vedere operatore di const_cast per informazioni sulla rimozione di questi attributi.

reinterpret_cast l'operatore di conversione di un valore di puntatore null al valore di puntatore null del tipo di destinazione.

Un utilizzo ottimale di reinterpret_cast è in una funzione hash, che esegue il mapping di un valore a un indice in modo da due valori distinti in genere con lo stesso indice.

// 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 consente il puntatore venga considerato come un tipo integrale.Il risultato viene quindi bit-è spostato e XORed con se stessa per scrivere un indice univoco (univoco a un livello elevato di probabilità).L'indice viene troncato da un cast di tipo C standard al tipo restituito della funzione.

Vedere anche

Riferimenti

Operatori di cast

Parole chiave C++