2014-02-13 44 views
0

我存儲一個對象作爲QSharedPointer內部(私人)(所以它會刪除它)。對於getter我應該返回一個參考一個原始指針或QSharedPointer?應該從對象的getters返回引用指針或QSharedPointers?

另外我不確定http://qt-project.org/wiki/SharedPointersAndQmlOwnership是什麼意思。有人能爲我總結一下嗎?

+1

有沒有一般的規則。該對象是否必須在堆上創建?封閉對象是否應該擁有對象,還是共享所有權?是否有另一種管理方法(QObject與父母,它與QSharedPointer不兼容)? –

回答

1

最終,您正在定義getter的語義。這取決於你指定它返回的任何對象的生命週期。

具體地,如果任何吸氣劑返回預期壽命比它的部件的吸氣劑是對象,則必須或者:

  • 返回共享指針,或

  • 返回一個複製。

你的內部存儲的對象可以是隱式共享(比如使用QSharedDataQSharedDataPointer不一樣QSharedPointer!),因此複製可能是便宜,使如果不進行進一步的修改。

如果任何getter返回只需要活着,有效的,只要其成員的吸氣劑,那麼你可以提供以下選項對象:

  • 返回參考,

  • 返回const引用,

  • 返回一個普通的指針(非智能)。

名義上,通過值返回的引用和滑動指針推定是無用當其構件吸氣劑是對象,模具吸氣劑返回。只有當堆分配對象的所有權通過返回指針傳遞給調用者時,纔可以通過明確記錄「getter」來破壞推定。

相關問題