在析构函数运行时是否有可能不破坏obj?

时间:2014-02-25 21:26:39

标签: c++

如果我覆盖了我的类的析构函数,是否可以检查该实例是否应该被杀死或发送到池中?我想简单地重用obj,用户只需要释放它(或留给编译器),析构函数会检查它是否可重用。

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

2 个答案:

答案 0 :(得分:4)

一旦对象的析构函数开始运行,该对象被认为是死的:12.4 [class.dtor]第14段:

  

为对象调用析构函数后,该对象不再存在; ...

答案 1 :(得分:0)

当然不是 - 你也没有引用 - 你怎么能回收那个对象呢?

所以解决这个问题,你就会有解决方案。使用智能指针并将引用存储在您实际需要的任何地方,可能在地图中或由另一个对象拥有(例如,现在看起来更像是Java解决方案),或者在准备好时手动删除它(这不太聪明)