Sdílet prostřednictvím


reinterpret_cast operátora

Umožňuje všechny ukazatele převést na jiný typ ukazatele.Umožňuje také převést do libovolného typu ukazatele a naopak všechny integrálního typu.

reinterpret_cast < type-id > ( expression )

Poznámky

Zneužití reinterpret_cast operátor snadno nebezpečné.Pokud není požadovaný převod je ze své podstaty nižší úrovně, byste měli použít jiných subjektů nádech.

reinterpret_cast Lze použít operátor pro převody jako char* na int*, nebo One_class* na Unrelated_class*, které jsou ze své podstaty nebezpečné.

Výsledek reinterpret_cast nelze bezpečně použít pro jiné než právě odevzdaných zpět na původní.Jiná použití jsou nejlépe, nonportable.

reinterpret_cast Operátor nelze přetypovat pryč const, volatile, nebo __unaligned atributy.Viz const_cast operátor informace o odebrání těchto atributů.

reinterpret_cast Operátor převede hodnotu ukazatele null na hodnotu typu cílového ukazatele null.

Jedno praktické použití reinterpret_cast je ve funkci hash, které mapy hodnotu index tak, že dvě odlišné hodnoty zřídka konce nahoru s stejný index.

// 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žňuje ukazatel považovány integrálního typu.Výsledkem je pak bit posunutí a XORed sám se k vytvoření jedinečného indexu (jedinečný pro vysoký stupeň pravděpodobnosti).Index pak zkrácen podle standardní C-styl přetypovat na typ funkce vrácení.

Viz také

Referenční dokumentace

Obsazení operátory

Klíčových slov jazyka C++