【发布时间】:2011-04-22 02:35:29
【问题描述】:
这两种类型的指针有什么区别?据我所知,QSharedPointer 可以很好地处理情况,那么 QSharedDataPointer 需要什么?
【问题讨论】:
标签: c++ qt pointers qsharedpointer
这两种类型的指针有什么区别?据我所知,QSharedPointer 可以很好地处理情况,那么 QSharedDataPointer 需要什么?
【问题讨论】:
标签: c++ qt pointers qsharedpointer
来自 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 个)进行了非常出色的讨论。
【讨论】: