2
A
回答
5
簡單來說:
{ // Enter scope
shared_ptr<A> my_a(new A);
shared_ptr<B> my_b(new B);
my_a->remember_this_b(my_b); // Stores a copy of a smart pointer
my_b->remember_this_a(my_a); // Stores a copy of a smart pointer
} // Leave scope. my_a and my_b are destroyed.
如果這兩個函數存儲在shared_ptr
,的對象將永遠不會被刪除,因爲無論shared_ptr
將達到零引用計數。
但是,如果其中任何一個使用weak_ptr
,那麼weak_ptr
指向的對象在離開作用域時將被銷燬。而這又會摧毀最後一個shared_ptr
到另一個對象。
相關問題
- 1. shared_ptr,weak_ptr和循環依賴關係
- 2. boost :: shared_ptr循環依賴關係
- 3. 如何打破版本庫之間的循環依賴關係
- 4. 通過接口打破Python中的循環依賴關係
- 5. 引入依賴關係打破了現有的依賴關係?
- 6. 循環依賴關係?
- 7. 循環依賴關係
- 8. SQL循環依賴關係
- 9. Python循環依賴關係
- 10. 循環依賴關係
- 11. C++循環依賴關係
- 12. Hudson循環依賴關係
- 13. 依賴關係排序與循環依賴關係的檢測
- 14. 連接依賴關係時的循環依賴關係
- 15. PostgreSQL設計依賴關係樹沒有循環依賴關係
- 16. Spring beanfactory中的循環依賴關係
- 17. Gerrit中的循環依賴關係
- 18. Python中的循環依賴關係
- 19. 類之間的循環依賴關係
- 20. 3NF中的循環依賴關係
- 21. 與ninject的循環依賴關係
- 22. Eclipse中的循環依賴關係CDT
- 23. SOA中的循環依賴關係
- 24. Spring中的循環依賴關係
- 25. npm:破壞依賴關係
- 26. XML的循環依賴關係
- 27. 類的循環依賴關係
- 28. ES6/7中的循環依賴關係
- 29. 處理循環依賴關係
- 30. 循環依賴關係 - 再次