一文读懂:C++中单例模式的实现

单例模式的实现

单例模式是一个比较模板化的设计模式,通常在实际应用中可以直接复用写好的框架。

如下是一种典型的模式:

复制代码
class Singleton {
private:
    static Singleton* s_instancePtr;

public:
    static Singleton* instance() {
        // TODO
        return s_instancePtr;
    }

private:
    Singleton() = default;
    ~Singleton() = default;

private:
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;
};

Singleton* Singleton::s_instancePtr = nullptr;

这里为了防止调用者突破单例,需要两层防护:

  1. 将需要的构造函数设为 private
  2. 将拷贝构造函数和拷贝赋值显示删除

对于这个全局的访问点,我们需要设置一个 pubilc 的 static 函数,下文也是着重对该函数进行讲解。

单例模式用在哪里?

配置管理‌:比如系统配置信息,一份就够了,保证所有模块读到的配置一样。

‌资源池‌:像数据库连接池、线程池,多了浪费资源,限制数量更高效。

‌日志记录‌:所有日志写到同一个地方,避免信息冗余混乱,方便统一管理。‌‌‌

相关推荐
文丑颜不良啊几秒前
LeetCode1881~1990题目解析
java·leetcode
Chen_harmony17 分钟前
七、STL与string类
开发语言·c++
xxxiugou12343 分钟前
C++命名空间与引用全解析
开发语言·c++
十碗饭吃不饱1 小时前
后端运维:网络联通、进程查询、Java服务启动脚本
java·运维·网络
T_Wizard1 小时前
后端转 AI 应用开发,我先把这 12 个名词理清了:一张图看懂架构、RAG、Tool Calling 与 MCP
java·ai编程
杨航 AI1 小时前
JEV的用法
java·前端·数据库
灿飞1 小时前
Kotlin与Java虚拟机七:空安全:把十亿美元的错误消灭在类型系统里
java·kotlin
知识搬运临时工1 小时前
JVM 删掉偏向锁之后,一次无竞争锁从 0.3 纳秒变成 5.4 纳秒
java
用户7624117567052 小时前
第十五章 人工智能基础
c++
IT枫斗者枫哥2 小时前
用了BigDecimal还差一分?用四组Java代码查清原因
java·后端