强制转换

三种强制转换:

  • static_cast 可以用于两种相关指针类型之间的强制转换,eg void* 与 double*.
void* pv;
int* pi = static_cast<int*>(pv);
  • reinterpret_cast 可以在两个不相关的类型之间转换,例如 int   double*.
    Register* in = reinterpret_cast<Register*>(0Xff);
    

    这里告诉编译器内存中的某个特定部分用作一个寄存器。

  • const_cast 可以“抛弃常量修饰”。
    void f(const Buffer* p)
    {
      Buffer*b = const_cast<Bugger*>(p);
    }
    

    要尽量避免类型转换。

posted @ 2011-09-07 18:19  jc24  Views(139)  Comments(0)    收藏  举报