dynamic_cast 是 C++ 语言中的一种动态类型转换操作符,它在运行时检查类型的转换安全性。
在这篇文章中,我们将详细介绍 dynamic_cast 的用法和应用场景。
1. dynamic_cast 的基本概念
dynamic_cast 用于执行动态类型转换。它主要用在含有虚函数的基类和派生类之间的类型转换。
转换成功的前提是:待转换的表达式的类型是目标类型或目标类型的公有派生类。
如果转换失败,对于指针类型,dynamic_cast 返回 nullptr,对于引用类型,dynamic_cast 抛出一个 std::bad_cast 异常。
2. dynamic_cast 的使用场景
dynamic_cast 的主要使用场景是用于类层次间的上行转换和下行转换。
上行转换是将派生类的指针或引用转换为基类表示,这种转换是安全的。
而下行转换是将基类指针或引用转换为派生类表示,这种转换在 C++ 中是不安全的,因此需要使用 dynamic_cast 进行动态检查。
3. dynamic_cast 的用法示例
以下是一个 dynamic_cast 的用法示例:
class Base {
public:
virtual void print() const {
cout