0

我在内部(私有)将一个对象存储为 QSharedPointer(因此它将删除它)。对于 getter,我应该返回原始指针还是 QSharedPointer 的引用?

我也不确定http://qt-project.org/wiki/SharedPointersAndQmlOwnership是什么意思。有人可以为我总结一下吗?

4

1 回答 1

1

最终,您将定义 getter 的语义。您可以指定它返回的任何对象的生命周期。

具体来说,如果预期 getter 返回的任何内容都比 getter 成员所在的对象寿命长,那么您必须

  • 返回一个共享指针,或

  • 退回一份。

您的内部存储对象可以被隐式共享(例如使用QSharedDataQSharedDataPointer QSharedPointer!不同),因此如果不进行进一步修改,复制可能会很便宜。

如果 getter 返回的内容只需要与 getter 成员所在的对象一样有效且有效,那么您还可以提供以下选项:

  • 返回参考,

  • 返回一个常量引用,

  • 返回一个普通的指针(非智能)。

名义上,当 getter 的成员所在的对象死亡时,返回引用和普通指针的 getter 返回的值被假定为无用。只有当堆分配对象的所有权通过返回指针传递给调用者时,才能通过显式记录“getter”来打破假设。

于 2014-02-15T07:08:54.427 回答