如果我重写我的类的析构函数,是否可以对它进行检查,如果该实例应该被杀死或发送到池中?我想简化重用obj,用户只需要释放它(或者留给编译器),析构函数会检查它是否可重用。当析构函数运行时,是否可以不破坏obj?
ReusableClass::~ReusableClass() {
if (x == 1) {
// abort destructor, send to pool
}
}
如果我重写我的类的析构函数,是否可以对它进行检查,如果该实例应该被杀死或发送到池中?我想简化重用obj,用户只需要释放它(或者留给编译器),析构函数会检查它是否可重用。当析构函数运行时,是否可以不破坏obj?
ReusableClass::~ReusableClass() {
if (x == 1) {
// abort destructor, send to pool
}
}
一旦对象的析构函数开始运行的对象被认为是死:12.4 [class.dtor]段14:
一旦析构函数被调用的对象,该对象不再存在; ...
当然不是 - 你有没有参考对象要么 - 你怎么能回收的对象呢?
所以解决这个问题,你会有解决方案。使用智能指针并将引用存储在任何实际需要它的地方,可能位于地图中或被另一个对象所拥有(例如,现在看起来更像Java解决方案),或者在准备就绪时手动删除它(这不太智能) 。
也许你应该考虑像一个智能指针与自定义删除器。 –
你想重用对象本身,还是仅仅重用对象占用的内存/空间? –
我想重用对象 – Nezquick