作者legnaleurc (CA)
看板C_and_CPP
標題[問題] 多型的自動回收
時間Tue Oct 6 15:16:09 2009
我有一個 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
推 willhunting:這不就是為何要有virtual destructor的原因嗎 10/06 16:12
推 littleshan:嗯,用 virtual destructor 即可 10/06 17:06
→ legnaleurc:可是執行到 super class 的 destructor 時 10/06 19:20
→ legnaleurc:subclasses 定義的 virtual function 還能正常使用嗎? 10/06 19:20
推 Ebergies:你在 subclass 的 destructor 做完不就好了 10/07 10:27