写一个C3单例模式类
时间: 2024-09-11 09:15:37 浏览: 40
C3单例模式是一种改进版的懒汉式单例模式,它解决了线程安全问题,避免了多次实例化的问题。在C++中,C3单例可以这样实现:
```cpp
#include <atomic>
class Singleton {
private:
// 使用原子引用来确保初始化过程的线程安全
static std::atomic<std::unique_ptr<Singleton>> instance;
public:
Singleton() = default; // 构造函数保持私有,防止外部直接创建实例
~Singleton() {} // 析构函数保持默认,保证仅有一个实例
// 获取唯一实例
static Singleton* getInstance() {
if (!instance) {
// 只有当实例不存在时才进行初始化
instance = new(std::addressof(instance)) Singleton();
}
return instance.get(); // 返回指向实例的指针
}
// 防止通过拷贝构造函数和赋值操作符创建副本
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
// 初始化静态成员
std::atomic<std::unique_ptr<Singleton>> Singleton::instance(nullptr);
```
阅读全文