Qt 对象的getter应该返回引用指针还是qsharedpointer?

Qt 对象的getter应该返回引用指针还是qsharedpointer?,qt,shared-ptr,getter,qsharedpointer,Qt,Shared Ptr,Getter,Qsharedpointer,我将一个对象作为QSharedPointer存储在内部(private)(因此它将删除它)。对于getter,我应该返回引用原始指针还是QSharedPointer 我也不知道这是什么意思。有人能为我总结一下吗?最终,您定义了getter的语义。由您指定它返回的任何对象的生存期 具体地说,如果期望getter返回的内容比getter成员所在的对象的寿命长,那么您必须执行以下操作之一: 返回共享指针,或 返回一份副本 可以隐式共享内部存储的对象(例如使用QSharedData和QSharedD

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


我也不知道这是什么意思。有人能为我总结一下吗?

最终,您定义了getter的语义。由您指定它返回的任何对象的生存期

具体地说,如果期望getter返回的内容比getter成员所在的对象的寿命长,那么您必须执行以下操作之一:

  • 返回共享指针,或

  • 返回一份副本

可以隐式共享内部存储的对象(例如使用
QSharedData
QSharedData指针
(与
QSharedPointer
!)这样,如果不进行进一步修改,复制成本可能会很低

如果只要getter的成员是对象,getter返回的任何内容都只需要是活动的和有效的,那么您还可以提供以下选项:

  • 返回一个引用

  • 返回常量引用

  • 返回普通指针(非智能)


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

没有一般规则。必须在堆上创建对象吗?封闭对象应该拥有对象,还是应该共享所有权?是否有其他管理方法(QObject与parent,这与QSharedPointer不兼容)?