目录
1.静态类型转换
1.1语法
1.2用法
2.动态类型转换
2.1语法
2.2用法
3.常量类型转换
3.1语法
3.2用法
4.重新解释转换
4.1语法
1.静态类型转换
1.1语法
static_cast<目标转换类型>(待转换变量)
1.2用法
- 可用于基本数据类型之间的转换。比如int和char之间的转换
- 可用于继承中基类和派生类之间指针或引用的转换(父转子,不安全;子转父,安全)
2.动态类型转换
2.1语法
dynamic_cast<目标转换类型>(待转换变量)
2.2用法
- 不允许基本数据类型之间的转换
- 可用于继承中基类和派生类之间指针或引用的转换(向上转换和静态转换一样,向下转换时,动态转换会检查类型,普通的向下转换不安全,会转换失败;向上转换,成功;若是多态,那么转换总是安全的,则转换成功)
3.常量类型转换
3.1语法
const_cast<目标转换类型>(待转换变量)
3.2用法
- 只针对指针或引用进行转换
- 常量指针被转化成非常量指针,仍然指向原来的对象
- 常量引用被转化成非常量引用,仍然指向原来的对象
//举例
const int* p=NULL;
int* p=const_cast<int*>(p);
4.重新解释转换
4.1语法
reinterpret_cast<目标转换类型>(待转换变量)
注意:重新解释转换是一个非常底层的转换方式,可能会导致未定义的行为,不推荐使用