C++里单例模式的实现

单例模式是十分常见的一种设计模式。一个确定的单例模式在程序中只会有一个实例,所以在一些系统中,希望某个类的实例只有一个,那么就可以将这个类定义为一个单例类。

之前用cocos2d-x写了个小游戏,因为游戏中的数据在各个layer中都是相同的,所以只需要一个实例就够了,所以就将游戏数据类定义为一个单例类。


下面是关于单例类的一段简单代码:

class Singleton
{
private:
	Singleton(){}
public:
	static Singleton* getInstance();
	void run();
	static Singleton* mInstance;
};

Singleton* Singleton::mInstance = NULL;

Singleton* Singleton::getInstance()
{
	if(mInstance == NULL)
	{
		mInstance = new Singleton();
	}
	return mInstance;
}

void Singleton::run()
{
	cout<<"This is Singleton"<<endl;
}

int main()
{
	Singleton::getInstance()->run();
	return 0;
}

运行结果如下:



在单例类中,定义一个静态的指向本类的指针mInstance,在类外对其进行初始化。由于将类的构造函数声明成了private,那么就意味着只能通过成员函数来调用单例类的构造函数,而不能在类外调用。所以要获取单例类的实例,只能通过类中的getInstance()方法来得到,第一次调用时执行new Singleton(),而之后再调用时,mInstance已经不为空,可以直接返回MInstance。而当需要调用单例类中的成员函数时,需要先得到单例类的mInstance指针,再调用成员函数。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值