首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【C/C++学习】之6、reinterpret_cast

2012-09-10 
【C/C++学习】之六、reinterpret_castreinterpret_cast new_type (expression)reinterpret_cast是强制类型

【C/C++学习】之六、reinterpret_cast

reinterpret_cast <new_type> (expression)

reinterpret_cast是强制类型转换符!他是用来处理无关类型转换的,通常为操作数的位模式提供较低层次的重新解释!但是他仅仅是重新解释了给出的对象的比特模型,并没有进行二进制的转换!

他是用在任意的指针之间的转换,引用之间的转换,指针和足够大的int型之间的转换,整数到指针的转换,在家面的文章中将给出!


来看一个例子:

// expre_reinterpret_cast_Operator.cpp// compile with: /EHsc#include <iostream>// Returns a hash code based on an addressunsigned 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;}


对于强制类型转换,他们各有各的用途,但是不要去频繁使用他们,每次使用前我们可以尝试是否有其他方法能达到相同的目的,如果必须使用,那么我们要限制强制转换的作用域,并且记录所有假定涉及的类型,可以减少错误的发生!


2012/8/7

jofranks 于南昌


热点排行