Sun Studio 12:C++ 用户指南

9.2 reinterpret_cast

表达式 reinterpret_cast<T>(v) 用于更改对表达式 v 值的解释。该表达式可用于在指针和整型之间,在不相关的指针类型之间,在指向成员的指针类型之间,和在指向函数的指针类型之间转换类型。

使用 reinterpret_cast 运算符可能会得到未定义的结果或实现相关结果。以下几点描述了唯一确定的行为:


class A {int a; public: A();};
class B: public A {int b, c;};
void use_of_reinterpret_cast()
{
     A a1;
     long l = reinterpret_cast<long>(&a1);
     A* ap = reinterpret_cast<A*>(l);      // safe
     B* bp = reinterpret_cast<B*>(&a1);    // unsafe
     const A a2;
     ap = reinterpret_cast<A*>(&a2);  // error, const removed
}