2
A
回答
5
「所有權」的概念並未嵌入到C++語言中。這是程序員用來理解他們自己的代碼而不是語言功能的設計概念。通常它意味着一些負責釋放資源的代碼實體(例如動態分配的對象),但有時它意味着不同的東西。
因此,對象一般無法確定其「所有權」,因爲使用對象的代碼可能定義和管理所有權的方式不止一種。
根據您程序中的所有權意味着什麼,boost::enable_shared_from_this
可能會對您有所幫助。它允許一個對象(或者有引用的對象)參與該對象的共享所有權,但它仍然不會告訴你需要與之共享的其他實體。因此,如果您實際上不需要知道A
的實例,那麼只需要B
的實例不會被髮布即可。 A
以及其他對B
實例的生命週期感興趣的其他人都將保留使用shared_from_this
函數獲取的shared_ptr
至B
。
如果您需要B
來訪問A
的實例,那麼您將不得不創建自己的機制。例如,您可以在B
的實例中存儲指向A
實例的指針。
相關問題
- 1. C++:CRTP:如何知道所有對象的數量?
- 2. 如何知道對象表的對象類型名稱? (Oracle)的
- 3. 如何知道一個對象的ID只有「對象」
- 4. nib文件如何知道文件的所有者控制器
- 5. 我如何知道所有訂閱者何時完成?
- 6. 每個抽象類都知道別人
- 7. 對於.xib文件,我怎麼知道文件的所有者是什麼類?
- 8. 對象構圖 - 構圖者應該知道構圖對象嗎?
- 9. 如果一個對象知道很多它的所有者,它是一種代碼味道嗎?
- 10. 如何知道類別下拉選擇的子類別?
- 11. 如何獲得與某個類別相關的所有子類別,而不必知道它有多深。
- 12. 如何知道HCURSOR對象的大小
- 13. 如何知道工作對象所屬的jclass(JNI)
- 14. ri知道所有的ruby類嗎?
- 15. 如何知道所有的PSU
- 16. 如何知道列表中的對象的類型?
- 17. Javascript - 對象如何知道類的原型中的函數?
- 18. 需要知道NSNotification對象中的所有偵聽器
- 19. 填充的對象不知道真正的類型的對象
- 20. 如何知道netlogo中的對象類型?
- 21. CLR如何知道盒裝對象的類型?
- 22. 如何知道什麼類是對象實例的? (php5)
- 23. 我應該如何知道jquery中對象的返回類型?
- 24. 我如何知道對象的類型並導致它?
- 25. 如何知道一個jQuery對象的類型?
- 26. 知道對象的類名時創建對象的問題
- 27. 如何知道當對象有一些動態分配內存時對象佔用的所有內存?
- 28. 對象所有者的架構問題
- 29. 撤消由從對象的所有者
- 30. 2個所有者的對象
如果多個對象持有指向B實例的指針會怎樣? –
如果你想讓一個類知道它的「所有者」(在不同的上下文中它可能意味着很多東西),那麼你必須將一個指向所有者的指針傳遞給該類的構造函數並存儲它。 –
沒有辦法做到這一點。如果你想要一個對象的概念被另一個對象所擁有,你必須在一些代碼中實現它。這些細節很大程度上取決於你想要做什麼。 – john