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"<run();
	return 0;
}

运行结果如下:



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



你可能感兴趣的:(C++里单例模式的实现)