首页 > 编程语言 > 详细

C++单例模式实现再回顾

时间:2020-08-18 20:13:51      阅读:89      评论:0      收藏:0      [点我收藏+]

单例模式需要注意的问题:

1、static实例保证只有一个实例

2、需要C++类外初始化实例、线程锁等

3、私化构造函数,关闭赋值运算符=和拷贝构造函数

4、应当有Releas函数

5、应该考虑线程安全问题

下面是懒汉模式的实现:

#include <thread>
#include <mutex>

class  singleton
{
private:
    singleton() = default;

public:
    static singleton * m_instance;
    static std::mutex mu;

    static singleton * GetInstance();
    void Print();
    void Release();

    singleton & operator=(const singleton & pinstance) = delete;
    singleton(const singleton & pinstance) = delete;
    ~ singleton();
};
#include "single.h"
#include <iostream>
using namespace std;

singleton* singleton::m_instance=nullptr;
std::mutex singleton::mu;

void singleton::Print(){
std::cout<<" It‘s a singleton"<<std::endl;
}

singleton* singleton::GetInstance(){
    if (m_instance==nullptr)
    {
        mu.lock();
        if (m_instance==nullptr)
        {
          m_instance=new singleton();
        }
        mu.unlock();
    }
  return m_instance;
}

void singleton::Release(){
    delete m_instance;
}

 

C++单例模式实现再回顾

原文:https://www.cnblogs.com/xietianjiao/p/13525029.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!