懒汉式:线程不安全:想要线程安全就得加锁:
3个成员:
一个私有的构造函数
一个私有的静态的指针。
一个共有的静态外部访问接口函数。
使用时机:访问量不大,使用懒汉时,以时间换空间。
饿汉式:访问量大,多线程。以空间换时间。
class Singleton{
private:
static Singleton* p; // 一个私有静态变量,确保只有一个实例
SingleLeton(){} // 私有的构造函数,确保只能单例类自己创建实例
public:
static Singleton* getUniqueInstance();
};
Singleton* Singleton::p = nullptr;
Singleton* Singleton::getUniqueInstance(){
if(p == nullptr){
p = new Singleton();
}
return p;
}
饿汉式
class Singleton{
private:
static Singleton* p; // 一个私有静态变量,确保只有一个实例
SingleLeton(){} // 私有的构造函数,确保只能单例类自己创建实例
public:
static Singleton* getUniqueInstance();
};
Singleton* Singleton::p = new Singleton(); // 这里
Singleton* Singleton::getUniqueInstance(){
return p;
}