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í.