Sun Studio 12: C++ ユーザーズガイド

9.2 解釈を変更するキャスト

reinterpret_cast<T>(v) は式 v の値の解釈を変更します。この式は、ポインタ型と整数型の間、2 つの無関係なポインタ型の間、ポインタ型からメンバー型へ、ポインタ型から関数型へ、という各種の変換に使用できます。

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);      // 安全
     B* bp = reinterpret_cast<B*>(&a1);    // 安全ではない
     const A a2;
     ap = reinterpret_cast<A*>(&a2);  // エラー、const が削除された
}