C++带参数的单例模式

发布时间:2023年12月20日

在 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() 方法来获取单例对象。

文章来源:https://blog.csdn.net/xcksj666/article/details/135059542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。