reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。
使用场景:
- 从指针类型到一个足够大的整数类型
- 从整数类型或者枚举类型到指针类型
- 从一个指向函数的指针到另一个不同类型的指向函数的指针
- 从一个指向对象的指针到另一个不同类型的指向对象的指针
- 从一个指向类函数成员的指针到另一个指向不同类型的函数成员的指针
- 从一个指向类数据成员的指针到另一个指向不同类型的数据成员的指针
// 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;
}
https://www.cnblogs.com/ider/archive/2011/07/30/cpp_cast_operator_part3.html
本文深入探讨了C++中reinterpret_cast运算符的功能和使用场景,包括指针与整数之间的转换,不同函数指针和对象指针之间的转换,以及类成员函数和数据成员指针的类型转换。通过具体示例,如哈希函数的实现,展示了该运算符如何在实际编程中应用。
391

被折叠的 条评论
为什么被折叠?



