72. 题目:设计一个类,我们只能生成该类的一个实例。
/*
72. 题目:设计一个类,我们只能生成该类的一个实例。
分析:只能生成一个实例的类是实现了Singleton 模式的类型。
*/
class Singleton
{
private:
static Singleton* instance;
private:
Singleton();
Singleton(const Singleton&);
public:
static Singleton* GetInstance()
{
if(instance==NULL)
instance=new Singleton();
return instance;
}
};
Singleton* Singleton::instance=NULL;
/*
如果要加入多线程的考虑。
加入互斥量Mutex。加锁lock()。开锁unlock();
Mutex mu;
class Singleton
{
private:
static Singleton* instance;
private:
Singleton();
Singleton(const Singleton&);
public:
static Singleton* GetInstance()
{
if(instance==NULL)
{
lock(mu);
if(instance==NULL)
instance=new Singleton();
unlock(mu);
}
return instance;
}
};
Singleton* Singleton::instance=NULL;
*/