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

  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/start1225/p/3768901.html
Copyright © 2011-2022 走看看