文章目录 关于四种类型转换1. 使用场景(1)static_cast<新类型>(表达式)(2)const_cast<新类型>(表达式)(3)reinterpret_cast<新类型>(表达式)(4)dynamic_cast<新类型>(表达式) 2. 优点 关于四种类型转换 1. 使用场景 (1)static_cast<新类型>(表达式) 适用于不去除常量性(const)和异变性(mutable)的场合; 就是普通的类型转换 int a = 10; double b = static_cast<double>(a); (2)const_cast<新类型>(表达式) 适用于去除常性的转换;为了修改&a的数据 const int a = 10; int* pa = const_cast<int*>(&a); (3)reinterpret_cast<新类型>(表达式) 适用于重新解释:修改指针+1的识别能力和*解引用能力 int a = 10; char* b = reinterpret_cast<char*>(&a); (4)dynamic_cast<新类型>(表达式) 适用于多态中的转换:将派生类地址转换成基类地址 class Base { public: virtual void fun(){} }; class Son : public Base { public: virtual void fun(){} }; int main() { Son son; Base* bp = dynamic_cast<Base*>(&son); //切记:杜绝将基类对象转成派生类 return 0; } 2. 优点 见名知意