Meyer’s Singleton(梅耶单例)模式深度解析
Meyer’s Singleton 是 C++ 中最优雅、最安全的单例实现方式之一,由 C++ 大师 Scott Meyers 在《Effective C++》中提出。下面从原理到实现进行全面剖析:
一、经典实现
class Singleton {
public:
static Singleton& instance() {
static Singleton instance; // 关键点
return instance;
}
// 删除拷贝构造和赋值操作
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
private:
Singleton() = default; // 私有构造函数
~Singleton() = default; // 私有析构函数
};
二、核心原理
1. 静态局部变量特性
- 延迟初始化:在第一次调用
instance()
时才构造对象 - 线程安全:C++11 标准保证静态局部变量的初始化是线程安全的
- 唯一性:整个程序生命周期只初始化一次
2. 内存模型保证(C++11标准)
标准规定(§6.7 [stmt.dcl]):