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;
