欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

【C++】单例模式之C++实现

来源:本站整理 作者:佚名 时间:2017-08-17 TAG: 我要投稿
 
    static void DellInstance()
    {
        lock_guardlock(_mtx);
 
        if (_inst)
        {
            cout "delete "
            delete _inst;
            _inst = NULL;
        }
    }
 
private:
    SingleTon()//防止构造函数创建对象
        :_a(0)
    {}
 
    SingleTon& operator=(const SingleTon&) = delete;
    SingleTon(const SingleTon&) = delete;
 
    int _a;
    static SingleTon* _inst;//指向实例化的指针定义成静态成员
    static mutex _mtx;//保证安全的互斥锁
};
 
SingleTon* SingleTon::_inst = NULL;
mutex SingleTon::_mtx;
饿汉模式的实现
简洁,高效,不用加锁
但是在特定情况下会出现问题
实现方法1
class Singleton
{
public:
    static Singleton& GetInstance()
    {
        assert(_inst);
        return *_inst;
    }
 
    void Print()
    {
        cout "Singleton : "
    }
private:
    Singleton()
        :_a(0)
    {}
 
    int _a;
    Singleton& operator=(const Singleton&) = delete;
    Singleton(const Singleton&) = delete;
 
    static Singleton* _inst;
};
 
Singleton* Singleton::_inst = new Singleton;
实现方法2
class Singleton
{
public:
    static Singleton& GetInstance()
    {
        static Single _inst;
        return *_inst;
    }
 
    void Print()
    {
        cout "Singleton : "
    }
private:
    Singleton()
        :_a(0)
    {}
 
    int _a;
    Singleton& operator=(const Singleton&) = delete;
    Singleton(const Singleton&) = delete;
 
    static Singleton* _inst;
};
 
Singleton* Singleton::_inst = NULL;
 

上一页  [1] [2] 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载