2014-02-25 67 views
4

如果我重寫我的類的析構函數,是否可以對它進行檢查,如果該實例應該被殺死或發送到池中?我想簡化重用obj,用戶只需要釋放它(或者留給編譯器),析構函數會檢查它是否可重用。當析構函數運行時,是否可以不破壞obj?

ReusableClass::~ReusableClass() { 
    if (x == 1) { 
    // abort destructor, send to pool 
    } 
} 
+3

也許你應該考慮像一個智能指針與自定義刪除器。 –

+0

你想重用對象本身,還是僅僅重用對象佔用的內存/空間? –

+0

我想重用對象 – Nezquick

回答

4

一旦對象的析構函數開始運行的對象被認爲是死:12.4 [class.dtor]段14:

一旦析構函數被調用的對象,該對象不再存在; ...

0

當然不是 - 你有沒有參考對象要麼 - 你怎麼能回收的對象呢?

所以解決這個問題,你會有解決方案。使用智能指針並將引用存儲在任何實際需要它的地方,可能位於地圖中或被另一個對象所擁有(例如,現在看起來更像Java解決方案),或者在準備就緒時手動刪除它(這不太智能) 。

相關問題