乌鲁木齐全网建站外包公司到底值不值得去
c++单例模式
1、概念:
单例模式确保一个类只有一个实例,并提供一个全局访问点以获取该实例。这通常通过让类的构造函数为私有,以防止外部直接实例化,然后提供一个静态方法来获取实例。
2、实现方法:
实现单例模式的主要步骤包括:
①将类的构造函数和拷贝构造函数声明为私有,以防止外部直接实例化。
②提供一个静态私有成员变量来保存单例实例。
③提供一个静态公共方法,该方法用于获取单例实例。如果实例不存在,则创建实例并返回;如果实例已存在,则直接返回。
3、代码案例:
#include <iostream>
#include <mutex>
using namespace std;class Singleton {private:// 私有静态成员变量,用于保存单例实例static Singleton* instance;static mutex mtx; // 用于线程安全的互斥锁// 私有构造函数,防止外部实例化Singleton() {}// 拷贝构造私有化,防止外部实例化Singleton(const Singleton& obj) {}public:// 静态方法,用于获取单例实例static Singleton* getInstance() {lock_guard<mutex> lock(mtx); // 线程安全的锁定if (instance == nullptr) {instance = new Singleton();}return instance;}void showMessage() { cout << "Hello from Singleton!" << endl; }
};// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
mutex Singleton::mtx;int main() {Singleton* singleton1 = Singleton::getInstance();singleton1->showMessage();Singleton* singleton2 = Singleton::getInstance();singleton2->showMessage();// 两个实例是同一个,只有一个实例被创建if (singleton1 == singleton2) {cout << "Both instances are the same." << endl;}return 0;
}