给我提供一个cpp单例模式的示例
时间: 2023-03-16 12:44:23 浏览: 58
对于C++单例模式,示例代码如下: class Singleton {
private:
static Singleton* instance;
Singleton() {}
public:
static Singleton* getInstance() {
if (instance == nullptr)
instance = new Singleton();
return instance;
}
}; Singleton* Singleton::instance = nullptr;
相关问题
写出一个单例模式的示例代码
单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。下面是一个简单的单例模式示例代码:
```cpp
class Singleton {
private:
static Singleton* instance; // 静态成员变量,保存唯一实例的指针
Singleton() {} // 私有构造函数,防止外部创建实例
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = nullptr; // 初始化静态成员变量
int main() {
Singleton* obj1 = Singleton::getInstance();
Singleton* obj2 = Singleton::getInstance();
// obj1 和 obj2 是同一个实例
if (obj1 == obj2) {
cout << "obj1 and obj2 are the same instance." << endl;
}
return 0;
}
```
在上述示例代码中,Singleton 类中的静态成员变量 instance 保存了唯一实例的指针。getInstance() 方法用于获取该实例,如果实例不存在,则创建一个新的实例并返回;如果实例已存在,则直接返回该实例的指针。
通过调用 Singleton::getInstance() 方法,我们可以获取到 Singleton 类的唯一实例。在示例代码中,obj1 和 obj2 都是通过 getInstance() 方法获取到的实例,因此它们是同一个实例。
cpp的单例模式是什么?
C++的单例模式是一种软件设计模式,它确保一个类只有一个实例,并且该实例可以全局访问。这种模式通常用于需要全局访问的资源,例如数据库连接、日志记录器等。以下是一个简单的C++单例模式示例:
```cpp
class Singleton {
public:
static Singleton& getInstance() {
static Singleton instance; // 静态实例
return instance;
}
void doSomething() {
// 单例类的方法
}
private:
Singleton() {} // 私有构造函数
Singleton(const Singleton&) = delete; // 禁止拷贝构造函数
Singleton& operator=(const Singleton&) = delete; // 禁止赋值运算符
};
```
上述代码使用静态实例实现了单例模式。因为静态实例只会被初始化一次,所以getInstance()方法总是返回同一个实例。同时,Singleton的构造函数是私有的,这意味着只有Singleton类内部可以创建Singleton实例,从而确保只有一个实例存在。