c++ - 模板交叉继承

标签 c++ templates inheritance

当我发现这个时,我正在使用其他人制作的一些代码:

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/

相关文章:

c++ - std::list - 迭代器是否在移动时失效?

c++ - 如何处理模板化代码中的变量const?

C++将继承的类传递给期望基类的函数

java - 如何确定Container模板类

c++ - 在派生类中重写二进制运算符

带有继承的java静态初始化

C++ 定义跨文件常量的最佳方式

c++ - 使用 vDSP_deq22(双二阶 IIR 滤波器)进行滤波后的噪声/失真

c++ - 委托(delegate)构造函数不能有其他内存初始化器 - 错误

c++ - 存储指向成员函数的指针的容器