我想确保没有人能够从我的类层次结构中删除任何对象,而不是使用提供的 Destroy 方法。
基本原理是该层次结构中的任何对象都需要在开始销毁自身之前采用特殊的写入互斥锁,以确保在另一个线程正在使用它们时不会删除对象。
我知道我可以通过引用计数来防止这个问题,但是就潜在的性能影响和内存分配而言,这对系统来说也是一个更大的变化。
有没有办法以某种方式有效/智能地保护所有析构函数,以便子类可以调用其父母析构函数,而外人必须使用 Destroy?
我想出的一种安全(即它不会腐烂)的解决方案是将所有析构函数设为私有并将每个派生类声明为基类的朋友,但我更喜欢更优雅、更少手动和更容易的东西维护(例如不需要修改基类以便从它们派生)。
有这样的东西吗?也许一些聪明的技巧可以让事情像我想要的那样“工作”?
附言。我现在选择的解决方案是不阻止任何人在所有情况下调用 delete(只是在基类中使其受到保护),而是检测这种情况并在基类析构函数中调用 abort。