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

  • 相关阅读:
    appium python api(转)
    make clean 与 make distclean 的区别
    实参相依查找[条款25]----《C++必知必会》
    成员函数查找[条款24]---《C++必知必会》
    C++匿名名字空间
    程序界面多语言切换功能如何实现
    C 语言中 define 的全部使用方法总结
    #if defined(__cplusplus)
    伯乐在线
    jsp手动分页
  • 原文地址:https://www.cnblogs.com/start1225/p/3768901.html
Copyright © 2011-2022 走看看