reinterpret_cast
运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。重新解释类型,既不检查指向的内容,也不检查指针类型本身;但要求转换前后的类型所占用内存大小一致,否则引发编译时错误。由于太过于灵活,所以要慎用。
class A {
public:
int a;
void fun1() { cout << "A::fun1" << endl; }
};
int main()
{
A* a = new A();
int i = reinterpret_cast<int>(a);
A* b = reinterpret_cast<A*>(i);
b->fun1();
}