C++笔记之在基类和派生类之间进行类型转换的所有方法
code review!
文章目录
1.dynamic_cast和std::static_pointer_cast在基类和派生类之间的转换使用场景下的区别
在C++中,dynamic_cast
和std::static_pointer_cast
用于在基类和派生类之间进行类型转换,但它们有不同的使用场景和特性:
1.1.dynamic_cast
- 用途: 主要用于运行时类型检查和安全的向下转换(从基类到派生类)。
- 要求: 基类必须包含至少一个虚函数(通常是虚析构函数)。
- 性能: 由于涉及运行时检查,
dynamic_cast
性能可能较慢。 - 失败处理:
- 对于指针类型,如果转换失败返回
nullptr
。 - 对于引用类型,如果转换失败会抛出
std::bad_cast
异常。
- 对于指针类型,如果转换失败返回
使用场景: