Singleton 类写法

本文介绍了一种使用懒汉式初始化实现的单例模式。通过私有构造函数和静态成员函数sharedInstance()来确保类只有一个实例,并提供全局访问点。_instance变量在首次调用时创建并保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://www.cppblog.com/ElliottZC/archive/2007/07/20/28420.html

sharedInstance() 静态成员函数提供类操作的全局访问点。
静态成员变量 _instance 用于保存一个指向它的唯一实例的指针。

Singleton 类定义如下:
class Singleton {
private:
       static  Singleton*  _instance;
protected:
       Singleton();
public:
       static  Singleton*  sharedInstance();
};
实现如下:
Singleton*  Singleton::_instance = 0;
Singleton*  Singleton::sharedInstance() {
       if (_instance == 0) {
              _instance = new Singleton();
       }
       return _instance;
}
客户仅通过 Singleton::sharedInstance() 函数访问这个单件。
变量 _instance 初始化为 0,而静态成员函数 sharedInstance() 返回该变量值,如果其值为0,则用唯一实例初始化它。
_instance 使用惰性(Lazy)初始化;它的返回值直到第一次访问时才被创建和保存。
另外,注意 Singleton 类的构造函数是保护型的(protected),试图直接实例化 Singleton 类的客户将得到一个编译时的错误信息。
这就保证了仅有一个实例可以被创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值