C++单例模式

前言

C++中的单例模式(Singleton Pattern)是一种常用的软件设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式通常用于管理共享资源,如配置信息、线程池、缓存等。

一、懒汉式单例

class Singleton {
private:
    Singleton() {} // 私有构造函数

public:
    static Singleton& getInstance() {
        static Singleton instance; // 局部静态变量
        return instance;
    }
};

懒汉式单例在第一次使用时才创建实例

二、饱汉式单例

class Singleton {
private:
    static Singleton instance; // 静态实例

    Singleton() {} // 私有构造函数

public:
    static Singleton& getInstance() {
        return instance;
    }
};

// 实现静态成员变量
Singleton Singleton::instance;

饿汉式单例在程序启动时就创建实例,这保证了线程安全,但可能会增加启动时间。

三、使用智能指针

#include <memory>
#include <mutex>

class Singleton {
private:
    static std::shared_ptr<Singleton> instance;
    static std::mutex mutex;
    Singleton() {} // 私有构造函数

public:
    static std::shared_ptr<Singleton> getInstance() {
        if (instance == nullptr) {
            std::lock_guard<std::mutex> lock(mutex);
            if (instance == nullptr) {
                instance = std::make_shared<Singleton>();
            }
        }
        return instance;
    }
};

// 初始化静态成员变量
std::shared_ptr<Singleton> Singleton::instance = nullptr;
std::mutex Singleton::mutex;
相关推荐
Reese_Cool29 分钟前
【C++】从C语言到C++学习指南
c语言·c++·1024程序员节
小柯J桑_31 分钟前
C++:探索AVL树旋转的奥秘
开发语言·c++·avl树
数学人学c语言32 分钟前
从熟练Python到入门学习C++(record 6)
c++·python·学习
深情汤姆2 小时前
C++ 红黑树
数据结构·c++
skaiuijing2 小时前
Sparrow系列拓展篇:消息队列和互斥锁等IPC机制的设计
c语言·开发语言·算法·操作系统·arm
绵绵细雨中的乡音3 小时前
C++第28课-布隆过滤器的介绍
c++·哈希算法
雯0609~3 小时前
c#:winform调用bartender实现打印(学习整理笔记)
开发语言·c#
C++忠实粉丝3 小时前
计算机网络socket编程(5)_TCP网络编程实现echo_server
网络·c++·网络协议·tcp/ip·计算机网络·算法
胜天半子_王二_王半仙5 小时前
c++源码阅读__smart_ptr__正文阅读
开发语言·c++·开源
程序猿阿伟5 小时前
《C++智能合约与区块链底层交互全解析:构建坚实的去中心化应用桥梁》
c++·区块链·智能合约