如何实现单例模式?

什么是单例模式?

单例模式是一种创建型的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例

单例模式在整个程序运行期间只创建一个对象,常用于管理全局资源,实现日志系统等场景

将构造函数私有化,拷贝构造函数和赋值运算符删除

cpp 复制代码
class Singleton{
private:
    Singleton() {}
    Singleton(const Singleton& other) = delete; //禁止使用
    Singleton& operator=(const Singleton&object) = delete;  //禁止使用
};

在C++中如何实现单例模式

**懒汉式实现:**在第一次调用获取实例的方法时才创建实例。这种实现方式可能存在线程安全问题,需要进行同步处理。

cpp 复制代码
class Singleton{
private:
    static Singleton* instance;
    Singleton(){}
public:
    static Singleton* getinstance(){
        if(instance==nullptr){
            instance=new Singleton();        
        }
        return instance;
    }                
};
Singleton* Singleton::instance=nullptr;

static作用:在这个代码中,static关键字用于声明instance成员变量为静态变量。静态变量是属于类而不是类的实例的变量,因此在整个程序运行期间只会有一个m_instance_ptr变量的实例。这使得在getInstance()方法中可以对该变量进行检查,确保只创建一个Singleton类的实例。

**饿汉式实现:**在程序启动时就创建实例。这种方式时线程安全的,但可能会在不需要实例的时候就创建它

cpp 复制代码
class Singleton{
private:
    static Singleton* instance;
    Singleton(){}
public:
    static Singleton* getinstance(){
        return instance;
    }                
};
Singleton* Singleton::instance=new Singleton();
相关推荐
晨星05278 小时前
软件设计模式之单例模式
单例模式·设计模式
code bean2 天前
【wpf】WPF开发避坑指南:单例模式中依赖注入导致XAML设计器崩溃的解决方案
单例模式·wpf
是三好4 天前
单例模式(Singleton Pattern)
java·开发语言·算法·单例模式
青春易逝丶4 天前
单例模式
单例模式
YA3334 天前
java设计模式一、单例模式
java·单例模式·设计模式
枫景Maple4 天前
Unity中多线程与高并发下的单例模式
unity·单例模式·游戏引擎
iiiiaaiashah5 天前
单例模式的mock类注入单元测试与友元类解决方案
java·开发语言·单例模式
jingfeng5148 天前
线程池及线程池单例模式
linux·开发语言·单例模式
Brookty9 天前
深入解析Java并发编程与单例模式
java·开发语言·学习·单例模式·java-ee
Meteors.10 天前
23种设计模式——单例模式(Singleton)详解
单例模式·设计模式