一個新手的問題:我有個教學班,一些虛擬功能的層次,我想實現一個工廠方法,但我不知道什麼是最好的方法:在C++中實現工廠方法的首選方法是什麼?
- 返回原始指針從工廠方法並將其包裝到調用方法中的智能指針中
- 返回工廠的智能指針
- 從工廠返回一個正確的對象(但它是否正確複製派生類?)並將其分配給調用方法中的本地對象
- 返回工廠的引用(但是如何創建在工廠方法中的對象沒有內存泄漏?)
我將不勝感激的工廠方法和最小的客戶端,這是有效的,不泄漏內存的例子。
我的背景是C#和Java,所以我有點在C++ atm中的內存管理中丟失了。
實際上,持續返回`boost :: shared_ptr`通常是一個好主意。這不是一個很大的痛苦(至少比原始指針更痛苦)。由於大多數多態層次結構是由不可複製的對象組成的(即不提供`clone`方法),共享語義往往是你想要的。雖然謹防循環依賴。 – 2011-01-24 18:34:33
@Alexandre:根據我的經驗,循環依賴是真的,非常罕見。至少當你不使用事件/信號時。那些弱引用(即普通指針)可能始終是最好的解決方案。不知道。說實話,從來沒有用C++做過。 – 2011-01-24 18:55:07