我在内部(私有)将一个对象存储为 QSharedPointer(因此它将删除它)。对于 getter,我应该返回原始指针还是 QSharedPointer 的引用?
我也不确定http://qt-project.org/wiki/SharedPointersAndQmlOwnership是什么意思。有人可以为我总结一下吗?
我在内部(私有)将一个对象存储为 QSharedPointer(因此它将删除它)。对于 getter,我应该返回原始指针还是 QSharedPointer 的引用?
我也不确定http://qt-project.org/wiki/SharedPointersAndQmlOwnership是什么意思。有人可以为我总结一下吗?
最终,您将定义 getter 的语义。您可以指定它返回的任何对象的生命周期。
具体来说,如果预期 getter 返回的任何内容都比 getter 成员所在的对象寿命长,那么您必须:
返回一个共享指针,或
退回一份。
您的内部存储对象可以被隐式共享(例如使用QSharedData
和QSharedDataPointer
(与 QSharedPointer
!不同),因此如果不进行进一步修改,复制可能会很便宜。
如果 getter 返回的内容只需要与 getter 成员所在的对象一样有效且有效,那么您还可以提供以下选项:
返回参考,
返回一个常量引用,
返回一个普通的指针(非智能)。
名义上,当 getter 的成员所在的对象死亡时,返回引用和普通指针的 getter 返回的值被假定为无用。只有当堆分配对象的所有权通过返回指针传递给调用者时,才能通过显式记录“getter”来打破假设。