饿汉式单例模式C++
时间: 2024-06-13 07:01:57 浏览: 120
C++实现单例模式(懒汉式)源码
饿汉式单例模式是一种常见的设计模式,它在程序启动时就实例化了单例对象,因此一加载程序就完成了初始化。这种方式的名字来源于它“先吃”(即预先加载)了单例,避免了懒汉式(延迟加载)可能带来的线程安全问题。
在C++中,饿汉式单例模式的实现通常如下:
```cpp
// 使用静态成员变量和构造函数
class Singleton {
public:
// 静态成员函数返回单例实例
static Singleton& getInstance() {
static Singleton instance; // 饿汉式:一开始就创建实例
return instance;
}
private:
// 构造函数为私有,防止外部直接创建对象
Singleton() {}
// 没有复制构造函数和赋值操作符,防止拷贝
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
};
```
饿汉式单例模式的优点是:
1. 实例化在编译期间完成,不需要依赖运行时环境,性能较好。
2. 线程安全,因为对象是在编译时创建的,没有线程同步的需求。
然而,饿汉式单例模式的缺点也很明显:
1. 所占内存固定,如果应用不需要该单例,在内存紧张的情况下可能浪费空间。
2. 如果程序中有多个模块需要这个单例,全局唯一的特性可能会导致模块间的耦合度增加。
阅读全文