C++获取单例类的数据
时间: 2024-09-20 16:10:04 浏览: 34
c++单例模式线程日志类
4星 · 用户满意度95%
在C++中,获取单例类的数据通常有两种常见的方式:静态成员变量和懒汉式单例模式。
1. **静态成员变量**:
如果你想确保在整个程序生命周期中只有一个实例,并且立即可用,可以使用静态成员变量作为存储数据的地方。创建一个静态成员函数返回这个唯一实例:
```cpp
class Singleton {
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
private:
Singleton() {} // 防止直接构造
Singleton(const Singleton&) = delete; // 防止拷贝构造
Singleton& operator=(const Singleton&) = delete; // 防止赋值操作
// 数据成员
int data;
};
```
这时你可以通过 `Singleton::getInstance().data` 来访问单例类的数据。
2. **懒汉式单例** (线程安全版本):
如果担心多次初始化导致的问题,可以使用线程锁保证同步。例如,使用互斥量(mutex):
```cpp
#include <mutex>
std::mutex mutex;
class Singleton {
public:
static Singleton& getInstance() {
std::lock_guard<std::mutex> lock(mutex);
if (!instance) {
instance = Singleton();
}
return instance;
}
private:
Singleton() {}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
// 数据成员
int data;
bool initialized = false;
};
// 使用时像之前一样: Singleton::getInstance().data
```
阅读全文