C++ 单例模式

2018-06-17 20:42:14来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

  C++实现单例模式的三种方法

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <mutex>

using namespace std;

class singleton
{
public:
	static singleton *getInstance();
private:
	singleton() = default;
	singleton(const singleton &sle) {}
	static mutex mtx;
	static singleton *instance;
};
singleton *singleton::instance;
mutex singleton::mtx;

// 懒汉式
singleton *singleton::getInstance()
{
	mtx.lock();
	if (instance == NULL)
	{
		instance = new singleton;
	}
	mtx.unlock();
	return instance;
}

// 双重锁式
singleton *singleton::getInstance()
{
    if (instance == NULL)
    {
        mtx.lock();
	if (instance == NULL)
	{
		instance = new singleton();
	}
	mtx.unlock();
    }
    return instance;
}

// 饿汉式
singleton *singleton::instance = new singleton;
singleton *singleton::getInstance()
{
	return instance;
}

void test()
{
	singleton *sle1 = singleton::getInstance();
	singleton *sle2 = singleton::getInstance();

	cout << sle1 << endl;
	cout << sle2 << endl;

	/*singleton sle3 = *sle1;
	cout << &sle3 << endl;*/
}

int main(void)
{
	test();

	system("pause");
	return 0;
}    

  要适当的注销代码...

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C++的六个函数

下一篇:快速数论变换(NTT)小结