如果我覆盖了我的类的析构函数,是否可以检查该实例是否应该被杀死或发送到池中?我想简单地重用obj,用户只需要释放它(或留给编译器),析构函数会检查它是否可重用。
ReusableClass::~ReusableClass() {
if (x == 1) {
// abort destructor, send to pool
}
}
答案 0 :(得分:4)
一旦对象的析构函数开始运行,该对象被认为是死的:12.4 [class.dtor]第14段:
为对象调用析构函数后,该对象不再存在; ...
答案 1 :(得分:0)
当然不是 - 你也没有引用 - 你怎么能回收那个对象呢?
所以解决这个问题,你就会有解决方案。使用智能指针并将引用存储在您实际需要的任何地方,可能在地图中或由另一个对象拥有(例如,现在看起来更像是Java解决方案),或者在准备好时手动删除它(这不太聪明)