使用C++生成一个通过继承来实现单例模式的模板类
时间: 2024-11-05 12:28:29 浏览: 16
在C++中,我们通常会避免直接在模板类中实现单例模式,因为C++标准库并没有提供内置的方式来保证模板实例化只创建一次。不过,我们可以设计一个模板基类,然后用它来创建特定类型的单例,并利用`static`成员函数和私有构造函数来实现。
下面是一个简单的例子,展示了如何使用模板基类和派生类来实现单例:
```cpp
template <typename T>
class SingletonBase {
public:
static T& getInstance() {
static T instance;
return instance;
}
protected:
// 私有构造函数防止实例化
SingletonBase() = default;
private:
// 禁止拷贝构造函数和赋值操作符
SingletonBase(const SingletonBase&) = delete;
SingletonBase& operator=(const SingletonBase&) = delete;
};
// 派生出具体的单例类
class MySingleton : public SingletonBase<MySingleton> {
public:
void doSomething() {
// 实现业务逻辑
}
};
// 获取并使用单例
int main() {
auto& mySingleton = MySingleton::getInstance();
mySingleton.doSomething();
return 0;
}
阅读全文