HelloWorld开发者社区

www.helloworld.net - 开发者专属的技术社区

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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  欢迎所有热爱技术的大牛,小菜,一起学习讨论进步提高,欢迎随时批评指正

posted on 2014-06-04 22:44  HelloWorld开发者社区  阅读(1036)  评论(0编辑  收藏  举报