C++ 在析构函数运行时是否可以不析构函数obj?

C++ 在析构函数运行时是否可以不析构函数obj?,c++,C++,如果重写类的析构函数,是否可以在该实例应该被终止或发送到池中时对其进行一些检查?我想简单地重用obj,用户只需要释放它(或留给编译器),析构函数将检查它是否可重用 ReusableClass::~ReusableClass() { if (x == 1) { // abort destructor, send to pool } } 一旦一个对象的析构函数开始运行,该对象就被认为是死的:12.4[class.dtor]第14段: 一旦为对象调用析构函数,该对象就不再存在 当然不

如果重写类的析构函数,是否可以在该实例应该被终止或发送到池中时对其进行一些检查?我想简单地重用obj,用户只需要释放它(或留给编译器),析构函数将检查它是否可重用

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

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

一旦为对象调用析构函数,该对象就不再存在


当然不是——你也不会引用这个对象——那么你怎么能回收这个对象呢


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

也许你应该考虑一个像自定义指针的智能指针。你想重用对象本身,或者仅仅是对象占用的内存/空间?我想重用对象。