c++11 实现单例模式

news/2024/7/20 14:49:21 标签: c/c++, 设计模式, 内存管理
c++11 实现单例模式

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;

 


 注:设计模式交流学习群 632945466  欢迎所有热爱技术的大牛,小菜,一起学习讨论进步提高,欢迎随时批评指正

posted on 2014-06-04 22:44  九路313 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/start1225/p/3768901.html


http://www.niftyadmin.cn/n/824868.html

相关文章

sklearn加载外部数据集

1.使用numpy.loadtxt 2.解决Arff格式的方案 参考.arff files with scikit-learn? & LIAC-ARFF v2.1使用scipy.io.arff.loadarff from scipy.io import arffdatasetarff.loadarff("D:/res/weather.nominal.arff") print(dataset) In [24]: type(dataset) Out…

sklean中的NaiveBayes

朴素贝叶斯理论推导与三种常见模型

成为编程大牛很简单,把这些书看个八成就OK

程序员必读书单 1.0 原文链接&#xff1a;http://lucida.me/blog/developer-reading-list/ 本文把程序员所需掌握的关键知识总结为三大类19个关键概念&#xff0c;然后给出了掌握每个关键概念所需的入门书籍&#xff0c;必读书籍&#xff0c;以及延伸阅读。旨在成为最好最全面的…

sqlserver 同字段值拼接 列转行

sqlserver 同字段值拼接(效果同oracle中的wm_concat&#xff09; 2012-08-13 18:20:46| 分类&#xff1a; sqlserver | 标签&#xff1a;sqlserver |举报 |字号大中小 订阅 合并列值 --******************************************************************************…

读取xml中的指定节点的值

/// <summary> /// 读取xml中的指定节点的值/// </summary> private string ReadXmlNode(string filename){string result "-1";XmlDocument xmlDoc new XmlDocument();try{xmlDoc.LoadXml(filename);//读取Activity节点下的数据。SelectSingleNode匹…

[Spring Batch] 图解Spring Batch原理

找到一副以前学习的图&#xff0c;稻清楚的描述了Spring Batch运行原理&#xff1a; 转载于:https://www.cnblogs.com/garinzhang/p/spring_batch_diagram_prototype.html

程序设计实践C++ 程序代写(QQ 928900200)

程序设计实践 采用C作为编程语言。设计开发一个“学生信息”管理系统。该系统模拟数据库管理系统&#xff08;DBMS&#xff09;的功能&#xff0c;为用户提供数据存储、查找的能力。 该系统存储的学生信息包括&#xff1a; 学号、姓名、性别、语文成绩、数学成绩如&#xff1a;…

般若波罗蜜多心经——背过最好了

观自在菩萨&#xff0c;行深般若波罗蜜多时&#xff0c;照见五蕴皆空&#xff0c;度一切苦厄。舍利子&#xff0c;色不异空&#xff0c;空不异色&#xff0c;色即是空&#xff0c;空即是色&#xff0c;受想行识&#xff0c;亦复如是。舍利子&#xff0c;是诸法空相&#xff0c;…