帮我写一个C++单例模式,使用实例化的时候使用new
时间: 2024-09-29 20:12:39 浏览: 33
在C++中,可以使用懒汉式单例模式结合`new`关键字来实现一个线程安全的单例类。这种设计确保了只在第一次请求时才会创建实例,并且保证在整个程序生命周期内只有一个实例存在。下面是一个简单的例子:
```cpp
#include <mutex>
class Singleton {
private:
static Singleton* instance;
static std::mutex mtx;
// 构造函数私有化,防止外部直接实例化
Singleton() {}
public:
// 获取唯一实例
static Singleton* getInstance() {
std::lock_guard<std::mutex> lock(mtx);
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
~Singleton() {
delete this; // 手动删除实例,避免内存泄漏
}
// 其他公共成员方法...
};
// 初始化静态变量
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mtx;
// 使用示例
int main() {
Singleton* singleton1 = Singleton::getInstance();
Singleton* singleton2 = Singleton::getInstance();
// singleton1 和 singleton2 指向的是同一个实例
assert(singleton1 == singleton2);
return 0;
}
阅读全文