[問題] 多型的自動回收

看板C_and_CPP (C/C++)作者 (CA)時間16年前 (2009/10/06 15:16), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/13 (看更多)
我有一個 abstract class, 它有 virtual open 和 virtual close 讓底下的 subclasses override 並自訂資源獲得/釋放的方式 現在我希望讓它能保證在實體被回收時釋放資源 目前唯一想到的方法就是在 destructor 上動手腳 但是我不能在 destructor 裡呼叫 virtual functions 目前的做法是,設一個 flag 記錄開啟狀態 open 時設為 true,close 後設為 false 然後在 destructor 裡檢查這個 flag 顏色不對就記錄到 logger 或是 assert 掉(看嚴不嚴重) 請問有沒有更好的方式呢? -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.248.119

10/06 16:12, , 1F
這不就是為何要有virtual destructor的原因嗎
10/06 16:12, 1F

10/06 17:06, , 2F
嗯,用 virtual destructor 即可
10/06 17:06, 2F

10/06 19:20, , 3F
可是執行到 super class 的 destructor 時
10/06 19:20, 3F

10/06 19:20, , 4F
subclasses 定義的 virtual function 還能正常使用嗎?
10/06 19:20, 4F

10/07 10:27, , 5F
你在 subclass 的 destructor 做完不就好了
10/07 10:27, 5F
文章代碼(AID): #1AokwyDq (C_and_CPP)
文章代碼(AID): #1AokwyDq (C_and_CPP)