看板 C_and_CPP 關於我們 聯絡資訊
我有一個 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