C++11出来后,里面新增加了好多好用的功能
下面的单例就是使用了C++11中的标准库中的mutex和unique_prt 进行内存管理的.
此单例模式不用担心内存的释放问题
#pragma once
#include <memory>
#include <mutex>
template <class T>
class Singleton
{
public:
typedef typename std::unique_ptr<T> handleType;
public:
static handleType& GetInstance()
{
if (!ms_inst)
{
std::mutex m;
std::lock_guard<std::mutex> lock(m);
ms_inst.reset(new T); //不要写成了ms_inst->reset(new T);
}
return ms_inst;
}
//需要使用protected 关键字,不能使用private
protected:
Singleton(){}
Singleton(const Singleton& inst){}
Singleton& operator=(const Singleton& inst){}
private:
static handleType ms_inst;
};
//下面的初始化需要加 typename
template<class T>
typename Singleton<T>::handleType Singleton<T>::ms_inst;
欢迎访问作者的helloworld的个人博客:
https://www.helloworld.net/jiulu
同时也可以加作者的微信:daitukeji
也可以扫下面的二维码添加
![image](https://img-hello-world.oss-cn-beijing.aliyuncs.com/imgs/f0b62fd75da7cbeba3b77965f4e26845.png)
注:设计模式交流学习群 632945466 欢迎所有热爱技术的大牛,小菜,一起学习讨论进步提高,欢迎随时批评指正