C++单例模式实现

/*C++单例模式的实现*/
#include <iostream>
using namespace std;

class Singleton
{
public:
	static Singleton* getInstance();//一个类方法,返回Single类型指针
	void setValue(int);
	int getValue();
	~Singleton();
private:
	Singleton();//构造函数私有
	static Singleton* instance;//唯一一个实例
	int value;
};
Singleton* Singleton::instance=NULL;//必须类外定义初值NULL
Singleton* Singleton::getInstance()
{
	if (NULL==instance)
	{
		instance=new Singleton();
	}
	return instance;
}

Singleton::Singleton()
{
	this->value=100;
	cout<<"Singleton Constructor!!!"<<endl;
}

Singleton::~Singleton()
{
	cout<<"Singleton Destructor!!!"<<endl;
}

int Singleton::getValue()
{ 
	return this->value;
}

void Singleton::setValue(int v)
{
	value=v;
}
//测试程序
int main()
{
	Singleton* s1=Singleton::getInstance();
	Singleton* s2=Singleton::getInstance();

	if(s1==s2)
		cout<<"s1,s2相等,并指向唯一一个单例实例"<<endl;
	cout<<"s1指向的实例的value等于"<<s1->getValue()<<endl;  
	cout<<"s2指向的实例的value等于"<<s2->getValue()<<endl;
	s1->setValue(200);
	cout<<"s1指向的实例的value等于"<<s1->getValue()<<endl; 
	cout<<"s2指向的实例的value等于"<<s2->getValue()<<endl;
	
	delete Singleton::getInstance();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值