单例模式的c++实现

来源:互联网 发布:互联网金融发展 知乎 编辑:程序博客网 时间:2024/04/30 08:22

singleton.h文件

#ifndef _SINGLETON_H_#define _SINGLETON_H_class Singleton{public:    static Singleton* get_instance()    {           if(!_instance)            return new Singleton();        return _instance;    }    ~Singleton()    {        delete  _instance;    }    int test() const    {        return _test;    }private:    //防止被用户调用    Singleton():_test(1) {}private:    static Singleton* _instance;    int _test;};#endif

main.cpp文件

#include <iostream>#include "singleton.h"using namespace std;Singleton* Singleton::_instance = nullptr;int main(int argc, char *argv[]){    Singleton *sin1 = Singleton::get_instance();    Singleton *sin2 = Singleton::get_instance();    cout << sin1->test() << endl;    cout << sin2->test() << endl;    return 0;}

这种写法只能用于单线程环境下,如果在多线程环境下,有两个线程同时执行到get_instance()时,将会产生两个实例。

原创粉丝点击