单例模式C++实现
1、单例模式(懒汉式)
class Singleton {
private:
Singleton() {}
~Singleton() {}
public:
static Singleton* getInstance() {
if(instance == nullptr) {
instance = new Singleton();
}
return instance;
}
private:
static Singleton* instance;
};
Singleton* Singleton::instance = nullptr;
2、单例模式(懒汉,加锁)
class Singleton {
private:
Singleton() {}
~Singleton() {}
public:
static Singleton* getInstance() {
lock();
if(instance == nullptr) {
instance = new Singleton();
}
unlock();
return instance;
}
private:
static Singleton* instance;
};
Singleton* Singleton::instance = nullptr;
3、单例模式(懒汉,双重锁定)
class Singleton {
private:
Singleton() {}
~Singleton() {}
public:
static Singleton* getInstance() {
if (instance == nullptr) {
lock();
if (instance == nullptr) {
instance = new Singleton();
}
unlock();
}
return instance;
}
private:
static Singleton* instance;
};
Singleton* Singleton::instance = nullptr;
4、单例模式(饿汉模式)
class Singleton
{
private:
Singleton()
{
}
static Singleton *p;
public:
static Singleton* getInstance()
{
return p;
}
};
Singleton* Singleton::p = new Singleton();