当我发现这个时,我正在使用其他人制作的一些代码:
template<typename T>
class Singleton {
public:
Singleton ( void );
~ Singleton ( );
...
};
class Manager: public Singleton<Manager> {
public:
Manager();
~Manager();
...
}
我知道菱形继承(钻石问题),这让我想起了它。 为了避免泄漏,有什么我应该检查的吗? 析构函数调用会产生一些问题吗?
最佳答案
不要认为析构函数调用会产生任何问题。 ~Manager
将调用 ~singleton<Manager>
.单例必须有指向 Manager
的唯一实例的指针应将其取消初始化设置为 nullptr
在 ~singleton<Manager>
仅在销毁时Manager
实例。这样一来,如果有人试图访问 Manager
的单个实例之后,将在释放较早的 Manager 实例后获得更新的实例。
关于c++ - 模板交叉继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198057/