Singleton模式创建唯一对象

Singleton模式用于创建一个唯一的对象,既然是唯一的,那么肯定就不支持拷贝构造和赋值操作符,同时,也不能创建其他的对象,所以不能将构造函数放到public中而让用户任意的构造对象。Singleton模式为这样的需求提供的解决方案。

直接上一个例子吧!

#include 

using namespace std;

class Singleton {
public:
	static Singleton* create(int x = 0);
	void print() { cout << i << endl; }
protected:
	Singleton(int x = 0): i(x) {};
private:
	Singleton(const Singleton&);
	Singleton& operator=(const Singleton&);

	static Singleton * _singleton;
	int i;
};

Singleton* Singleton::_singleton = NULL;

Singleton* Singleton::create(int x)
{
	if(!_singleton)
		_singleton = new Singleton(x);
	return _singleton;
}

int main()
{
	Singleton* s = Singleton::create(5);
	s->print();
	delete s;
	return 0;
}
Singleton类通过static成员_singleton,使得所有对象共享一个指针,同时static成员函数create确保只创建一个这样的对象。

你可能感兴趣的:(Singleton模式创建唯一对象)