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