C++11 类型转换

const

  • Low-level const: (const int) * ptr = &a;,ptr 可变
  • Top-level const: (int *) const ptr = &a;,ptr不可变

static_cast

用于明确定义的类型转换,不涉及low-level const转换

const_cast

  • 改变Low-level const 或 volatile
  • 如果用于去掉low-level const,且指向对象为常量,是UB
  • 常用于函数重载

dynamic_cast

用于在类的继承层次之间进行类型转换,

  • 向上转型(Upcasting): 无条件的,不会进行任何检测,所以都能成功
  • 向下转型(Downcasting): 向下转型的前提必须是安全的,要借助 RTTI 进行检测,所有只有一部分能成功
    失败返回空指针。

reinterpret_cast

位模式上的类型转换,确保转换后新类型对内存的使用正确

你可能感兴趣的:(C++)