C++实现单例的例子(备忘录)

单例的开发例子

#include <iostream>

class Foo
{
public:
	static Foo* getInstance();
	int getVal();
	void setVal(int);

private:
	Foo();
	~Foo();
	int val;
	static Foo* pInstance;
};

Foo::Foo()
{
	val = 1;
	std::cout << "pInstance constructed" << std::endl;
}

Foo::~Foo()
{
	delete pInstance;
}

Foo* Foo::pInstance = new Foo();

Foo* Foo::getInstance()
{
	return pInstance;
}

int Foo::getVal()
{
	return val;
}

void Foo::setVal(int x)
{
	val = x;
}

//----------------------------------------------

int main()
{
	Foo* foo1 = Foo::getInstance();
	std::cout << foo1->getVal() << std::endl;

	Foo* foo2 = Foo::getInstance();
	std::cout << foo2->getVal() << std::endl;

	foo1->setVal(9);
	std::cout << foo1->getVal() << std::endl;
	std::cout << foo2->getVal() << std::endl;

	system("pause");
	return 0;
}


测试结果:


单例还涉及到线程安全等问题,可以参考以下两篇文章:

http://blog.csdn.net/hackbuteer1/article/details/7460019

http://www.zkt.name/dan-li-mo-shi-singleton-ji-c-shi-xian/




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值