使用C++实现单例工程类
时间: 2024-10-09 16:02:31 浏览: 32
在C++中,实现单例模式通常采用“懒汉式”或“饿汉式”加载策略。这里是一个常见的懒汉式实现方式,它保证单例在首次请求时才初始化:
```cpp
#include <iostream>
#include <mutex>
class Singleton {
private:
static Singleton* instance; // 静态变量存储单例实例
static std::once_flag flag; // 一旦flag被初始化,就不再重复
// 私有构造函数防止直接实例化
Singleton() {}
public:
// 获取唯一实例
static Singleton* getInstance() {
std::call_once(flag, []{
instance = new Singleton();
});
return instance;
}
~Singleton() {
delete instance; // 销毁时删除实例
instance = nullptr; // 释放引用
}
// 具体功能实现...
};
// 初始化标志
Singleton* Singleton::instance = nullptr;
std::once_flag Singleton::flag;
int main() {
Singleton* singleton1 = Singleton::getInstance(); // 第一次获取
Singleton* singleton2 = Singleton::getInstance(); // 后续都是同一个实例
return 0;
}
阅读全文