2014-02-25 38 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解决方案),或者在准备就绪时手动删除它(这不太智能) 。

相关问题