一、C中类型转换
- (T)exp
- T(exp)
二、C++中类型转换
1. static_cast(exp)
- 类层次间转换:
上行转换是安全的
下行是不安全的,没有动态类型检查 - 基本类型转换
- 空指针转换为目标类型空指针
- non-const转换为const
- 局限:不能去掉const、volitale等属性
2. const_cast(exp)
- 去掉对象指针或对象引用的const属性
- 目的:修改指针(引用)的权限,可以通过指针或引用修改某块内存值
3. dynamic_cast(exp)
- 用于多态,在运行时进行类型转换
- 在一个类层次结构中安全地类型转换,把基类指针(引用)转换为派生类指针(引用)
- 因为引用不存在空引用,转换失败会抛出bad_cast异常
4. reinterpret_cast(exp)
- 改变指针(引用)类型
- 将指针(引用)转换为一个整型
- 将整型转换为指针(引用)
- T 必须为指针、引用、整型、函数指针、成员指针
- 仅仅是比特位拷贝,没有安全检查
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs