Udostępnij za pośrednictwem


Operator reinterpret_cast

Zezwala na każdy wskaźnik do przekonwertowania na inny typ wskaźnika.Umożliwia również wszelkie integralną typu są konwertowane na dowolny typ wskaźnika i odwrotnie.

reinterpret_cast < type-id > ( expression )

Uwagi

Nadużycie reinterpret_cast operator łatwo może być niebezpieczne.Chyba, że żądany rodzaj konwersji jest nieodłącznie niskiego poziomu, należy używać innych operatorów rzutowania.

reinterpret_cast Operator może być używany dla konwersji takich jak char* do int*, lub One_class* do Unrelated_class*, które są nieodłącznie niebezpieczne.

Wynik reinterpret_cast bezpiecznie nie może służyć do innych celów niż przy rzutować jego oryginalnego typu.Inne zastosowania są, co najlepsze, nonportable.

reinterpret_cast Operatora nie można rzutować away const, volatile, lub __unaligned atrybuty.Zobacz const_cast Operator Aby uzyskać informacje dotyczące usuwania tych atrybutów.

reinterpret_cast Operator konwertuje wartość na wskaźnik null wartość null wskaźnika typu miejsca docelowego.

Jeden praktyczne wykorzystanie reinterpret_cast w funkcji mieszania, mapy, których wartość do indeksu w taki sposób, że dwa odrębne wartości rzadko koniec z tym samym indeksem.

// 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 Umożliwia wskaźnik powinien być traktowany jako typ integralny.Wynik następnie jest bit przesunięte- i XORed z samym sobą w celu uzyskania unikatowego indeksu (unikatowy dużą dozą prawdopodobieństwa).Indeks jest następnie obcięty przez C-styl standardowy oddanych do zwracany typ funkcji.

Zobacz też

Informacje

Operatory odlewania

Słów kluczowych języka C++