在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