/**
单例模式类
*/
class Csingle;
Csingle* Csingle::m_pSingleInstence = NULL;
class Csingle
{
public:
static Csingle* GetInstance()
{
if (m_pSingleInstence == NULL)
{
m_pSingleInstence = new Csingle;
return m_pSingleInstence;
}
return m_pSingleInstence;
}
static void DeleteInstance()
{
if (m_pSingleInstence != NULL)
{
delete m_pSingleInstence;
m_pSingleInstence = NULL;
}
}
//其他函数
private:
Csingle(); //构造函数为private保证该类不会在外部被new
private:
static Csingle* m_pSingleInstence;
};
最近在工作中用到一次,在项目里面底层有一个类只需要有唯一实例,开始还不知道有这个名字。这里构造函数要是peivate的,以保证该类的实例必须通过我们提供的函数来获取,这样就可以控制对象只有一个。
注意如果存在多线程在GetInstence的过程中要进行线程的互斥。不然有可能会创建多个实例
更多可以看下这篇文章http://www.cnblogs.com/BoyXiao/archive/2010/05/07/1729376.html?login=1 很不错