在Qt框架中,提供了多种智能指针类,用于管理对象的生命周期和内存。常见的包括QPointer
、QSharedPointer
、QWeakPointer
和QScopedPointer
。它们各自有不同的用途和行为特点。本文将详细介绍这些类的区别和使用场景。
QPointer
QPointer
是一个模板类,专门用于管理继承自QObject
的对象。当被指向的对象被销毁时,QPointer
会自动设置为nullptr
,从而避免产生“悬空指针”。
示例代码:
QObject *obj = new QObject;
QPointer<QObject> pObj(obj);
delete obj;
Q_ASSERT(pObj.isNull()); // pObj现在是nullptr
QSharedPointer
QSharedPointer
是一个引用计数的智能指针。只要还有一个QSharedPointer
实例指向对象,该对象就不会被删除。它类似于C++11中的std::shared_ptr
。
示例代码:
in