美文网首页
C++模板实现单例模式

C++模板实现单例模式

作者: sunix | 来源:发表于2018-12-14 15:43 被阅读0次

早在第一篇博文中,最后提出一个问题,使用模板来实现单例模式.现给出方法.

singleton.h

#pragma once
#include <memory>
#include <mutex>

template<typename T>
class Singleton {
public:
    static std::shared_ptr<T> instance() {
        std::call_once(_onceFlag,[](){
            _instance = std::shared_ptr<T>(new T());
        });
        return _instance;
    };

protected:
    Singleton() {};
    ~Singleton() {};

private:
    Singleton(const Singleton& other);
    Singleton &operator=(const Singleton& other);

    static std::once_flag _onceFlag;
    static std::shared_ptr<T> _instance;
};

template<typename T>
static std::once_flag Singleton<T>::_onceFlag;

template<typename T>
static std::shared_ptr<T> Singleton<T>::_instance;

sample.h

#pragma once
#include "singleton.h"

class Sample : public Singleton<Sample> {
    friend class Singleton<Sample>;

public:
    ~Sample();
private:
    Sample();
};

相关文章

  • 单例模式

    单例模式及C++实现代码单例模式4种实现详解 c++11改进我们的模式之改进单例模式 单例模式(Singleton...

  • 学而时习之单例模式

    本文主要说明单例模式的概念,应用,以及C++实现。 I、上帝视角看单例模式 1.1 单例模式特点 单例模式需要满足...

  • python单例模式

    python单例模式实现方式 使用模板 python模块是天然的单例模式(.pyc文件的存在) 使用__new__...

  • Singleton 单例模式

    搬运自大神博客单例模式(Singleton)及其C++实现 单例模式,在GOF的《设计模式:可复用面向对象软件的基...

  • C++模板实现单例模式

    早在第一篇博文中,最后提出一个问题,使用模板来实现单例模式.现给出方法. singleton.h sample.h

  • C++ 单例模式

    本文介绍C++单例模式的集中实现方式,以及利弊 局部静态变量方式 上述代码通过局部静态成员single实现单例类,...

  • Java基础(3)——抽象类和单例设计模式

    本节内容1.单例设计模式2.抽象类实现模板设计模式3.抽象类实现造房子 一、单例设计模式1.设计模式:对经常出现的...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • python面试题-2018.1.30

    问题:如何实现单例模式? 通过new方法来实现单例模式。 变体: 通过装饰器来实现单例模式 通过元类来创建单例模式...

  • 单例模式

    一、实现单例模式 或者 二、透明的单例模式 三、用代理实现单例模式 四、JavaScript中的单例模式 在Jav...

网友评论

      本文标题:C++模板实现单例模式

      本文链接:https://www.haomeiwen.com/subject/yryghqtx.html