饱汉式
在真正需要使用的时候才进行构建,而不是在一开始就创建。如果要保证线程安全,需要使用一个mutex来保证。
饿汉式
- 类加载时即创建对象,线程安全
- 优点:执行效率高
- 缺点:类加载时就初始化,浪费内存资源
cpp
#include<iostream>
using namespace std;
class Single{
public:
static Single* getInstance(){
// if(pointer == nullptr){
// pointer = new Single();
// pointer->t = 10;
// }
return pointer;
}
void get(){
cout << t << endl;
}
~Single(){}
private:
Single(){};
int t = 0;
static Single* pointer;
};
// Single* Single::pointer = nullptr; // 饱汉式
Single* Single::pointer = new Single(); // 饿汉式
int main(){
auto p1 = Single::getInstance();
auto p2 = Single::getInstance();
cout << std::boolalpha << bool(p1 == p2) << endl;
return 0;
}