Re: [問題] 多型的自動回收
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間16年前 (2009/10/08 10:17)推噓0(0推 0噓 6→)留言6則, 2人參與討論串12/13 (看更多)
話說我想到另一個方法
因為並非所有的 C++ 物件都適合用 delete 來回收,
因此 shared_ptr 提供了一個彈性,
讓使用者可以修改物件回收的行為。
既然如此,我們可以從這邊下手,
讓 shared_ptr 自動幫我們呼叫 close()
void base_deleter(Base* p)
{
p->close(); // 這時候物件尚未被解構,多型呼叫是 OK 的!
delete p;
}
void foo()
{
// ...
shared_ptr<Base> p(new Derived(...), base_deleter);
// ...
}
這麼一來其它地方都不用改了
p 在解構時會呼叫 base_deleter 而非直接用 delete
當然 base_deleter 不一定非要函式指標不可
也可以是 functor 之類的東西
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.29.108
→
10/08 10:44, , 1F
10/08 10:44, 1F
→
10/08 10:44, , 2F
10/08 10:44, 2F
→
10/08 12:21, , 3F
10/08 12:21, 3F
→
10/08 12:21, , 4F
10/08 12:21, 4F
→
10/08 12:22, , 5F
10/08 12:22, 5F
→
10/08 12:23, , 6F
10/08 12:23, 6F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章