饿汉模式
在线程创建之前实例就已经被创建好,所以它的线程是安全的
优点:简单
缺点:可能会导致进程启动慢,且如果有多个单例类对象实例启动顺序不确定。
思路:
- 将它的构造函数私有化,拷贝构造函数,赋值运算符重载私有化。防止它可以继续创建新的对象
- 因为它要在线程创建之前就要把对象创建好,所以在类里面用static关键字来声明,在类外定义
- 因为现在你已经在类外创建不了对象,所以必须在public里面创建一个static定义的函数来返回这个对象
如果有什么问题可以共同讨论共同提高
代码:
class Singleton{
public:
static Singleton* Getintence(){
return &_intence;
}
private:
Singleton(){
}
/*Singleton(const Singleton&);
Singleton& operator=(const Singleton&);*/ //这个为C++98,如果时在类内定义的友元函数还可以构建新的对象
Singleton(const Singleton&)=delete;//所以C++13对这个问题进行了完善 提供了直接删除这个函数,
// 它定义在pubic里面也不能进行拷贝构造和赋值
Singleton& operator=(const Singleton&)=delete;//c++13里面提供了直接删除
static Singleton _intence;
};
Singleton Singleton::_intence;
int main(){
Singleton *s = Singleton::Getintence();
}