使用dynamic_pointer_cast需要注意以下几点: 1. 如果base_pointer所指向的对象实际上不是DerivedType类型的对象,则dynamic_pointer_cast会返回一个空指针。 2. 如果base_pointer为一个空智能指针,则dynamic_pointer_cast会返回一个空指针。 3. 使用dynamic_pointer_cast时需要包含头文件<memory>。 下面是一个使用dynam...
现在我们将使用dynamic_pointer_cast函数来将shared_ptr转换为不同类型的智能指针。调用dynamic_pointer_cast中的目标类型以及源类型作为参数。下面是一个例子: std::shared_ptr<void> void_ptr = std::dynamic_pointer_cast<void>(shared_ptr); 在上面的代码中,dynamic_pointer_cast函数将shared_ptr智能指针转换为...
本篇文章将从作用、使用步骤和示例等方面进行分析,希望能够帮助读者更好地了解dynamic_pointer_cast。 一、作用 dynamic_pointer_cast主要作用是实现智能指针之间的转换,它能够将基本智能指针按照派生类关系进行向下转换,并返回一个指向派生类的智能指针。这种转换可以保证类型安全,并且能够在运行时进行检查,从而避免出现...
dynamic_pointer_cast用于转换std::shared_ptr类型,例如从基类上的指针转换为派生类上的指针:...
template <class Ty, class Other> shared_ptr<Ty> dynamic_pointer_cast(const shared_ptr<Other>& sp); ParametersTy The type controlled by the returned shared pointer. Other The type controlled by the argument shared pointer. Other The argument shared pointer.Remarks...
使用:一个guarded指针,QPointer<T> ,行为和常规的指针 T * 类似 特点:当其指向的对象(T必须是QObject及其派生类)被销毁时,它会被自动置NULL. 注意:它本身析构时不会自动销毁所guarded的对象 用途:当你需要保存其他人所拥有的QObject对象的指针时,这点非常有用 ...
B * b = new B; A * a = b; 此时b就是向上转换。无需显式转换既可以编译通过。 2.dynamic_cast 一般用于有继承关系的类之间的向下转换。 3.dynamic_pointer_cast 当指针是智能指针时候,向下转换,用dynamic_Cast 则编译不能通过,此时需要使用dynamic_pointer_cast。
template <class Ty, class Other> shared_ptr<Ty> dynamic_pointer_cast(const shared_ptr<Other>& sp); ParametersTy The type controlled by the returned shared pointer. Other The type controlled by the argument shared pointer. sp The argument shared pointer.Remarks...
使用:一个guarded指针,QPointer<T> ,行为和常规的指针 T * 类似 特点:当其指向的对象(T必须是QObject及其派生类)被销毁时,它会被自动置NULL. 注意:它本身析构时不会自动销毁所guarded的对象 用途:当你需要保存其他人所拥有的QObject对象的指针时,这点非常有用 ...