既然maked_share创建指针都是指向于同一个地址,那么是否可以用于创建懒汉单例模式?
时间: 2024-10-13 21:10:13 浏览: 28
`std::shared_ptr`确实适合创建懒汉单例模式,因为它支持多线程下的安全共享,并且只有当真正需要使用单例实例时才会创建。以下是使用`shared_ptr`实现懒汉单例的一个简单示例:
```cpp
class Singleton {
public:
static std::shared_ptr<Singleton>& getInstance() {
static std::shared_ptr<Singleton> instance;
return instance;
}
private:
Singleton() {} // 默认构造函数仅允许通过shared_ptr访问
// 防止复制构造和赋值操作
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
// 使用时
std::shared_ptr<Singleton> singleton = Singleton::getInstance();
```
在这个模式中,`getInstance()`函数返回一个静态`shared_ptr`,如果实例尚未创建,则会自动创建一个新的实例。由于`shared_ptr`的特性,直到有其他线程请求实例时,这个单例才会实际被初始化。
阅读全文