概述
单例模式是一种广泛使用的模式,顾名思义就是一个类只能有一个实例,并提供一个全局访问点,该实例被程序所有模块所共享。有很多地方都有这样的功能模块,如系统的日志输出,资源管理器等
单例模式的特点:
1、 构造函数必须私有化
2、 对外提供获取唯一实例的接口
单例模式分类
饿汉模式(在某些场景实用)
懒汉模式(适用各种场景)
在需要的时候创建对象
懒汉模式需要引入同步机制才可以保证线程安全
最佳实现
#include <iostream>
class Singleton
{
public:
static Singleton& GetSingleton() {
static Singleton singleton;
return singleton;
}
private:
Singleton() {}
Singleton(Singleton& other) {}
};
int main()
{
//Singleton one; //不同创建对象
Singleton &one = Singleton::GetSingleton();
Singleton &two = Singleton::GetSingleton();
//Singleton three = one;//不能通过拷贝构造函数创建对象
std::cout << &one << std::endl;
std::cout << &two << std::endl;
}