C++带参数的单例模式

在 C++ 中实现带参数的单例模式可以通过以下步骤完成:

  1. 创建一个类,该类负责管理单例对象的创建和访问,并提供一个静态方法来获取单例对象。

  2. 在该类中添加一个私有的静态成员变量,用于保存单例对象的实例。

  3. 添加一个静态方法,用于获取单例对象的实例。在该方法中,可以根据参数的不同来创建不同的单例对象。

  4. 将构造函数设为私有,以防止外部代码直接实例化该类。

下面是一个简单的示例代码,演示了如何在 C++ 中实现带参数的单例模式:

```cpp

#include <iostream>

#include <string>

class Singleton {

public:

static Singleton* getInstance(const std::string& config) {

if (!instance) {

instance = new Singleton(config);

}

return instance;

}

void printConfig() {

std::cout << "Config: " << config << std::endl;

}

private:

Singleton(const std::string& config) : config(config) {}

static Singleton* instance;

std::string config;

};

Singleton* Singleton::instance = nullptr;

int main() {

Singleton* singleton1 = Singleton::getInstance("Config1");

singleton1->printConfig();

Singleton* singleton2 = Singleton::getInstance("Config2");

singleton2->printConfig();

return 0;

}

```

在上面的示例中,Singleton 类包含一个私有的静态成员变量 instance,用于保存单例对象的实例。getInstance() 方法接受一个参数 config,并根据参数来创建不同的单例对象。构造函数被设为私有,因此外部代码无法直接实例化 Singleton 类,只能通过 getInstance() 方法来获取单例对象。

相关推荐
繁华似锦respect42 分钟前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式
Bona Sun2 小时前
单片机手搓掌上游戏机(二十三)—esp32运行简单街机模拟器软硬件准备
c语言·c++·单片机
@小码农2 小时前
2025年北京海淀区中小学生信息学竞赛第二赛段C++真题
开发语言·数据结构·c++·算法
sulikey3 小时前
C++模板初阶详解:从函数模板到类模板的全面解析
开发语言·c++·模板·函数模板·类模板
0 0 03 小时前
CCF-CSP第39次认证第三题——HTTP 头信息(HPACK)【C++】
开发语言·c++·算法
汉克老师3 小时前
2023年海淀区中小学信息学竞赛复赛(小学组试题第二题 回文时间 (time))
c++·算法·北京海淀中小学信息竞赛·模拟法
还没想好取啥名4 小时前
C++11新特性(一)——原始字面量
开发语言·c++
天赐学c语言4 小时前
12.6 - K个一组翻转链表 && C 编译到执行的4个阶段
数据结构·c++·链表·c编译
爪哇部落算法小助手5 小时前
每日两题day65
数据结构·c++·算法
橘颂TA5 小时前
【剑斩OFFER】算法的暴力美学——颜色分类
数据结构·c++·算法·动态规划