c++单例模式伪代码
时间: 2023-12-22 08:28:24 浏览: 159
以下是C++单例模式的伪代码:
```cpp
template<typename T>
class Singleton {
public:
static T& getInstance() {
if (!value_) {
MutexGuard guard(mutex_);
if (!value_) {
value_ = new T();
}
}
return *value_;
}
private:
Singleton();
~Singleton();
static T* value_;
static Mutex mutex_;
};
template<typename T>
T* Singleton<T>::value_ = NULL;
template<typename T>
Mutex Singleton<T>::mutex_;
```
其中,`Mutex`是一个互斥锁类,`MutexGuard`是一个互斥锁保护类,用于自动加锁和解锁。`getInstance()`方法用于获取单例对象的引用,如果单例对象还未创建,则加锁创建,否则直接返回已创建的单例对象。`value_`是单例对象的指针,`mutex_`是互斥锁对象。
相关问题
c++ 单例模式伪代码
以下是C++单例模式的伪代码:
```cpp
class Singleton {
private:
static Singleton* instance;
Singleton() {} // 构造函数私有化,防止外部实例化
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
void doSomething() {
// 单例类的具体操作
}
};
Singleton* Singleton::instance = nullptr; // 静态成员变量初始化
int main() {
Singleton* s1 = Singleton::getInstance();
Singleton* s2 = Singleton::getInstance();
if (s1 == s2) {
cout << "s1和s2是同一个实例" << endl;
}
s1->doSomething();
return 0;
}
```
阅读全文