模板交叉继承

Template cross inheritance

本文关键字:继承      更新时间:2023-10-16

当我发现以下内容时,我正在使用其他人编写的一些代码:

template<typename T>
class Singleton {
    public:   
    Singleton       ( void );
    ~   Singleton       ( );
   ...
};

class Manager: public Singleton<Manager> {
public:
    Manager();
    ~Manager();
...
}

我知道钻石的问题,这让我想起了它。有什么东西我应该检查以避免泄漏吗?析构函数调用可能会产生一些问题?

不要认为析构函数调用会产生任何问题。CCD_ 1将调用CCD_ 2。singleton必须具有指向Manager的唯一实例的指针,该唯一实例应在仅销毁Manager实例时在~singleton<Manager>中设置为nullptr。所以,若有人在那个之后试图访问Manager的单个实例,那个么在释放之前的Manager实例后,就会获得新的实例。