dynamic_cast
的常见使用场景是 :基类指针/引用转换为派生类指针/引用
运行时类型检查:
dynamic_cast
会在运行时检查对象的实际类型,确保转换是合法的。如果转换不成功,返回 nullptr
(对于指针转换)或者抛出 std::bad_cast
异常(对于引用转换)
dynamic_pointer_cast
是 C++11 引入的智能指针类型转换操作符,专门用于 std::shared_ptr
或 std::unique_ptr
等智能指针的类型转换。它的作用与 dynamic_cast
类似,但是是针对智能指针的
std::shared_ptr<Derived> dynamic_pointer_cast<std::shared_ptr<Derived>>(std::shared_ptr<Base> ptr);