c++单例模式带参数
时间: 2024-10-30 12:05:56 浏览: 12
c++单例模式线程日志类
4星 · 用户满意度95%
在 C++ 中,单例模式通常用于确保某类只有一个实例,并提供全局访问点。当需要一个带参数的单例模式时,我们通常创建一个静态工厂函数,这个函数会根据传入的参数来构造并返回单例对象。下面是一个简单的示例:
```cpp
template <typename T>
class SingletonWithParam {
public:
// 构造函数为 private,防止直接实例化对象
SingletonWithParam(const ParamType& param) : data_(param) {}
// 静态获取唯一实例的工厂函数
static T* getInstance(const ParamType& param) {
static T instance(param); // 单例实例在这里通过模板初始化
return &instance;
}
// 返回带参数的数据成员
const T& getData() const { return data_; }
private:
// 数据成员作为模板参数的实例
T data_;
// 禁止复制构造和赋值操作
SingletonWithParam(const SingletonWithParam&) = delete;
SingletonWithParam& operator=(const SingletonWithParam&) = delete;
};
// 使用示例
SingletonWithParam<MyClass> *singleton = SingletonWithParam<MyClass>::getInstance(myParameter);
```
在这个例子中,`MyClass` 替换为具体的类名,`ParamType` 是传递给单例的参数类型,`myParameter` 是实际的参数值。
阅读全文