#include <iostream>
using std::cout;
using std::endl;
class Singleton{
public:
static Singleton& getInstance();//返回引用类型,避免产生对象副本,提高效率
~Singleton();
private:
Singleton();
static Singleton* state;
static int count;//测试标志,可有可无
};
Singleton* Singleton::state = 0;
int Singleton::count = 0;
Singleton::Singleton()
{
count++;
cout<<"构找了第"<<count<<"个实例"<<endl;
}
Singleton& Singleton::getInstance()
{
if(!state)
state = new Singleton();
return *state;
}
Singleton::~Singleton()
{
if(state) //刚加上去的判断
delete state;
state = 0;
}
int main(void)
{
Singleton test1 = Singleton::getInstance();
Singleton test2 = Singleton::getInstance();//不进行对象构造
return 0;
}