Aracılığıyla paylaş


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.

Ayrıca bkz.

Başvuru

Atama operatörleri

C++ anahtar sözcükler