討論串[問題] 多型的自動回收
共 13 篇文章
內容預覽:
在 virtual dtor 釋放資源的設計是對的。(這不是基本中的基本嗎?). 這跟他是不是要用 template method pattern 無關。. T 取得的資源就在由 T 來釋放。. 他在其他要呼叫 template method 的地方都可以盡情的呼叫沒關係,. 但是本質上資源管理是正
(還有373個字)
內容預覽:
話說我想到另一個方法. 因為並非所有的 C++ 物件都適合用 delete 來回收,. 因此 shared_ptr 提供了一個彈性,. 讓使用者可以修改物件回收的行為。. 既然如此,我們可以從這邊下手,. 讓 shared_ptr 自動幫我們呼叫 close(). void base_deleter
(還有150個字)
內容預覽:
我覺得這發生的機會比較少,如果會去改寫doClose的話,. 應該不會忘了在dtor裡面加上自動呼叫。. 我覺得原PO不是為了這個問題,而是原PO使用template method pattern,. 想呼叫的是 close() 不是 doClose()。. // template method.
(還有558個字)
內容預覽:
如果我的理解沒錯. 原po他希望的是 Derived裡面有個function負責relase資源. 但是在錯誤使用(delete 前忘了呼叫close的時侯)能夠自動釋放. 而且重要的是,希望能在Derived的設計者「忘了」在dtor呼叫doClose的時侯. 只要是從Base class繼承出來
(還有1185個字)
內容預覽:
不要 = =". 既然資源是在 D 配的,D 要自己處理,不要給 B 管. 所以這邊改成這樣. virtual ~Base() {} // 蝦米都不做. 然後 D 加上解構子. virtual ~Derived () { // 我自己來 XD. D::doClose(); // ~B() 不能呼叫虛
(還有27個字)