dynamic_pointer_cast
时间: 2023-11-20 21:06:05 浏览: 151
static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解
dynamic_pointer_cast 是 C++11 中的一个类型转换函数,用于将一个 std::shared_ptr 类型的指针转换为另一个派生类类型的 std::shared_ptr。使用 dynamic_pointer_cast 可以检查类型是否兼容,如果不兼容则返回空指针。
例如:
```
class Base {};
class Derived : public Base {};
std::shared_ptr<Base> basePtr = std::make_shared<Derived>();
std::shared_ptr<Derived> derivedPtr = std::dynamic_pointer_cast<Derived>(basePtr);
```
这里,basePtr 是一个指向 Derived 类型对象的 std::shared_ptr<Base>,我们可以使用 dynamic_pointer_cast 将其转换为 std::shared_ptr<Derived>,得到 derivedPtr。如果 basePtr 指向的对象不是 Derived 类型,那么 derivedPtr 将会是一个空指针。
需要注意的是,使用 dynamic_pointer_cast 转换时,指针类型必须是 std::shared_ptr 或 std::weak_ptr,不能使用裸指针。
阅读全文