zoukankan      html  css  js  c++  java
  • 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;

    欢迎访问作者的helloworld的个人博客:
    https://www.helloworld.net/jiulu

    同时也可以加作者的微信:daitukeji
    也可以扫下面的二维码添加
    ![image](https://img-hello-world.oss-cn-beijing.aliyuncs.com/imgs/f0b62fd75da7cbeba3b77965f4e26845.png)


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

  • 相关阅读:
    [bzoj]2131: 免费的馅饼
    [bzoj]1098: [POI2007]办公楼biu
    [luogu]P2051 [AHOI2009]中国象棋
    [luogu]P2825 [HEOI2016/TJOI2016]游戏
    MSSQL To MongoDB Tool (FREE)
    虚拟机和Linux安装详解
    Maven
    springmvc的文件上传和下载,框架集成
    json详解以及fastjson使用
    JSP——语法,指令,表达式语言(EL),JSTL标签
  • 原文地址:https://www.cnblogs.com/start1225/p/3768901.html
Copyright © 2011-2022 走看看