→ fragileness:什麼叫做"在 Base 這個層級就能在解構時自動回收" 10/07 02:20
→ fragileness:如果Derived::doClose()的內容也要使用者自己填 10/07 02:21
→ fragileness:那我覺得叫使用者再多填一個destructor並不過分 10/07 02:21
推 holymars:Derived open出來的資源,當然是要在Derived的destructor 10/07 10:22
→ holymars:處理啊@@ 你現在是希望Base的dtor可以幫Derived回收資源 10/07 10:23
推 scwg:如果一定想用這個順序, 建議你不要在 destruct 的時候再做 10/07 12:56
推 scwg:另外訂個 (non-virtual) void Release() 去 call doClose() 10/07 12:57
推 scwg:然後在 destruct 之前手動 release... 10/07 12:58
→ legnaleurc:應該說我希望 Base 會確保一定會呼叫到 close 吧 10/07 13:50
→ legnaleurc:因為我是用 Factory 包 shared_ptr<Base>丟回Derived 10/07 13:52
→ legnaleurc:當shared_ptr在delete Base時,我希望它確保close有 10/07 13:53
→ legnaleurc:被呼叫到。@scwg 那就是Base::close 在做的事 10/07 13:54
推 holymars:...那不就在Dtor裡明確呼叫Base::close()就好了嗎 10/07 15:32
推 holymars:欸不對我看錯了 close裡還有個virtual fucntion call 10/07 15:37