reinterpret_cast operatörü
Herhangi bir işaretçiyi başka bir işaretçi türü dönüştürülmesini sağlar.Ayrıca işaretçiyi her türlü içine ve dönüştürmek herhangi bir tamsayı türü sağlar.
reinterpret_cast < type-id > ( expression )
Notlar
Kötüye kullanma reinterpret_cast operator kolayca güvensiz olabilir.İstediğiniz dönüşümü doğası gereği düşük düzeyli olmadığı sürece, cast işleçlerden birini kullanmanız gerekir.
reinterpret_cast İþlevlerinin kullanýlabileceði dönüştürme gibi char* için int*, veya One_class* için Unrelated_class*, doğası gereği güvensiz olduğu.
Sonucu, bir reinterpret_cast güvenle özgün türünü artığını dışındaki bir şey için kullanılamaz.Diğer kullanımları, en iyi nonportable.
reinterpret_cast Operatör olamaz artığını hemen const, volatile, veya __unaligned öznitelikleri.Bkz: const_cast işleç bu öznitelikleri kaldırma hakkında bilgi için.
reinterpret_cast İşleci bir null işaretçi değeri hedef türü işaretçi null değerine dönüştürür.
Pratik bir kullanımı ve reinterpret_cast hangi bir şekilde bu iki ayrı bir dizinde değer eşlemeleri değerleri nadiren sonuna kadar ile aynı dizin bir karma işlev bulunmaktadır.
// 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 İşaretçiyi tamsayı türü işlem görmesini sağlar.Kaydırılacağı sonucu sonra bit-uzaklık ve kendisi ile XORed (benzersiz olasılığı yüksek bir dereceye kadar) benzersiz bir dizin oluşturmak için.Dizin sonra bir Standart c işlevi dönüş türünü artığını stili tarafından kesildi.