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

  • 相关阅读:
    href="#" 是什么意思?
    JavaScript匿名自执行函数~function(){}
    var $this = $(this)是什么意思?
    .Ajax
    myeclipse 的Customize Perspective 没有反应
    JS中的this指向问题
    JS中$含义和用法
    JS中sessionstorage的getItem/setItem/removeItem/clear
    JS中的top是什么?
    CAD常用命令大全
  • 原文地址:https://www.cnblogs.com/start1225/p/3768901.html
Copyright © 2011-2022 走看看