大话设计模式单例模式c++实现

单例模式

其他二十三种设计模式

#include<iostream> 

using namespace std;

//单例模式--懒汉式
class Singleton_lazy {
    
    
private:
	Singleton_lazy() {
    
     cout << "懒汉" << endl; }
	static Singleton_lazy* pSingleton;  //静态成员变量的初始化有些特别,是在类外初始化且不能在带有 static 关键字;

public:
	static Singleton_lazy* GetInstance() {
    
    
		if (pSingleton ==NULL)
		{
    
    
			pSingleton = new Singleton_lazy();
		}
		return pSingleton;
	}
};

//类外初始化
Singleton_lazy* Singleton_lazy::pSingleton = NULL;

//单例模式--饿汉式
class Singleton_hungry {
    
    
private:
	Singleton_hungry() {
    
     cout << "饿汉" << endl; }
	static Singleton_hungry* pSingleton;

public:
	static Singleton_hungry* GetInstance() {
    
    
		return pSingleton;
	}
};

//在主函数之前就实例化了
Singleton_hungry* Singleton_hungry::pSingleton = new Singleton_hungry;

void test1() {
    
    
	Singleton_lazy* s1 = Singleton_lazy::GetInstance();
	Singleton_lazy* s2 = Singleton_lazy::GetInstance();
	if (s1 == s2)
	{
    
    
		cout << "为同一实例" << endl;
	}
}
int main() 
{
    
    
	test1();
	return 0;
}

猜你喜欢

转载自blog.csdn.net/wode_0828/article/details/114143574