Singleton模式的两种基本实现方式

本文探讨Singleton模式的两种实现方式:指针实现和引用实现。指针实现方式能受控访问唯一实例,但可能导致误删;引用实现确保对象在程序结束时自动释放,但静态变量始终占用内存。此外,还介绍了Singleton Holder模板,用于批量管理多个Singleton对象。

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

Singleton模式的特点:

  • 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
    • 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作(C++中的一个静态成员函数)。
  • 和全局变量相比:
    • 编译器不保证全局变量的初始化顺序;
    • 全局变量不能防止实例化多个对象。

一、指针实现方式

//Singleton.h 
class Singleton 
{ 
public: 
    static Singleton* Instance();
protected: 
    Singleton();
private: 
    static Singleton* _instance; 
};


//Singleton.cpp 
Singleton* Singleton::_instance = 0;
Singleton::Singleton() 
{ 
    cout << "Singleton...." << endl; 
}
Singleton* Singleton::Instance() 
{ 
    if (_instance == 0) 
    { 
        _instance = new Singleton(); 
    }
    return _instance; 
} 


//main.cpp 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王旺旺旺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值