这两种指针之间有什么区别?据我所知,QsharedPointer可以很好地处理情况,那么QsharedDatapointer的需求是什么?

有帮助吗?

解决方案

来自QT文档qsharedDatapointer

qsharedDataPoInter类代表指向隐式共享对象的指针。 QsharedDatapointer使编写您自己的隐式共享类都容易。 qsharedDatapointer实现了线程安全参考计数,以确保将qsharedDataPoInters添加到您的recentrant类中不会使其无属性。许多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类对共享指针的有力参考QSharedPointer是C ++中的自动共享指针。它的行为完全像正常目的的普通指针,包括对constness的尊重。 QSHAREDPOINTER将在范围内删除其持有的指针,前提是没有其他QSHAREDPOINTE对象引用它。

>  QSharedPointer<MyObject> obj =
>          QSharedPointer<MyObject>(new MyObject);

因此,qsharedDatapointer用于使创建隐式共享类。而QsharedPointer是指向类的参考计数智能指针。


编辑

阅读时 QT中的内存管理?, ,我找到了这个链接 http://blog.qt.io/blog/2009/08/25/count-with-me-how-many-smart-smart-pointer-classes-does-does-qt-have/. 。关于不同智能指针QT的非常出色的讨论(当前API具有8个)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top