c++通过继承实现模板类的单例模式
时间: 2024-11-03 20:20:11 浏览: 37
在 C++ 中,通过继承实现模板类的单例模式通常结合了静态成员函数和模板特性。这种设计允许创建一个通用的单例实例,适用于任何派生自模板类的对象。以下是基本的步骤:
1. 定义一个模板基类 `SingletonBase`,包含一个私有构造函数和一个静态成员变量,用于存储唯一实例。
```cpp
template <typename T>
class SingletonBase {
private:
static std::unique_ptr<T> instance;
SingletonBase() = delete; // 防止实例化
public:
static T* getInstance() {
if (!instance) {
instance = std::make_unique<T>();
}
return instance.get();
}
};
```
2. 派生类 `MyTemplateClass` 从 `SingletonBase` 继承,并提供必要的功能和数据成员。
```cpp
class MyTemplateClass : public SingletonBase<MyTemplateClass> {
// 实现具体的类体...
};
```
3. 因为派生类已经隐式地继承了 `SingletonBase` 的单例行为,所以可以直接通过 `MyTemplateClass::getInstance()` 获取单例实例。
4. 如果需要访问特定类型的单例,可以这样做:
```cpp
MyTemplateClass<int>* intInstance = MyTemplateClass<int>::getInstance();
MyTemplateClass<std::string>* stringInstance = MyTemplateClass<std::string>::getInstance();
```
阅读全文