这两种指针有什么区别?据我所知,QSharedPointer可以很好地处理情况,那么对QSharedDataPointer的需求是什么?
答案 0 :(得分:6)
来自Qt文档 QSharedDataPointer
QSharedDataPointer类 表示隐式指向 共享对象。 QSharedDataPointer 隐含地写你自己的 共享课程很容易。 QSharedDataPointer实现 线程安全引用计数, 确保添加 QSharedDataPointers到您的可重入 类不会使它们不可重入。 许多Qt使用隐式共享 课程结合速度和 指针的内存效率 易于使用的课程。请参阅共享 类页面了解更多信息。
使用示例 -
#include <QSharedData>
#include <QString>
class EmployeeData : public QSharedData
{
public:
EmployeeData() : id(-1) { }
EmployeeData(const EmployeeData &other)
: QSharedData(other), id(other.id), name(other.name) { }
~EmployeeData() { }
QSharedPointer类拥有一个 对共享指针的强引用 QSharedPointer是自动的, C ++中的共享指针。它表现得很好 就像一个普通的指针一样 正常目的,包括尊重 常量性。 QSharedPointer将删除 它走的时候指针 超出范围,没有提供其他 QSharedPointer对象正在引用 它
> QSharedPointer<MyObject> obj =
> QSharedPointer<MyObject>(new MyObject);
因此,QSharedDataPointer用于创建隐式共享类。而QSharedPointer是一个指向类的引用计数智能指针。
修改强>
阅读Memory management in Qt?时,我发现此链接http://blog.qt.io/blog/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/。对Qt具有的不同智能指针进行了非常出色的讨论(当前API有8个)。