温馨提示×

C++怎么实现Singleton模式

c++
小亿
77
2024-01-19 01:06:04
栏目: 编程语言
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在C++中实现Singleton模式可以通过以下几种方式:

  1. 饿汉式单例模式:在程序启动时就创建单例对象,并且提供一个全局的访问点。
class Singleton {
private:
    static Singleton* instance;
    Singleton() {}

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

Singleton* Singleton::instance = new Singleton();
  1. 懒汉式单例模式:在第一次访问时才创建单例对象。
class Singleton {
private:
    static Singleton* instance;
    Singleton() {}

public:
    static Singleton* getInstance() {
        if (instance == nullptr) {
            instance = new Singleton();
        }
        return instance;
    }
};

Singleton* Singleton::instance = nullptr;
  1. 双重检查锁定单例模式:在第一次访问时才创建单例对象,并且使用双重检查锁定机制确保线程安全。
#include <mutex>

class Singleton {
private:
    static Singleton* instance;
    static std::mutex mtx;
    Singleton() {}

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

Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mtx;

这些是常见的实现Singleton模式的方式,选择其中一种方式根据具体需求和线程安全性要求进行选择。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:C# singleton单例模式如何测试

0