#include <iostream>
class CSingleton /* 懒汉式 */
{
public:
static CSingleton *GetInstance()
{
if(m_pInstance == NULL) //判断是否第一次调用
{
m_pInstance = new CSingleton();
}
return m_pInstance;
}
void RelaseInstance()
{
delete this;
}
void HelloWorld(void)
{
std::cout<<"Hello world!"<<std::endl;
}
private:
CSingleton() //构造函数是私有的
{
}
CSingleton(const CSingleton& that)//拷贝构造函数也应是私有的
{
}
~CSingleton()
{
m_pInstance = NULL;
}
static CSingleton *m_pInstance;
};
/*
1.一定要放在类定义后面初始化,放到前面就会报错。
2.一定要对这个静态类成员变量初始化,否则编译时报引用了未定义成员的错误。
*/
CSingleton* CSingleton::m_pInstance = 0;
int main(int argc, char** argv)
{
CSingleton *m_pInstance1 = CSingleton::GetInstance();
m_pInstance1->HelloWorld();
return 0;
}
class CSingleton /* 懒汉式 */
{
public:
static CSingleton *GetInstance()
{
if(m_pInstance == NULL) //判断是否第一次调用
{
m_pInstance = new CSingleton();
}
return m_pInstance;
}
void RelaseInstance()
{
delete this;
}
void HelloWorld(void)
{
std::cout<<"Hello world!"<<std::endl;
}
private:
CSingleton() //构造函数是私有的
{
}
CSingleton(const CSingleton& that)//拷贝构造函数也应是私有的
{
}
~CSingleton()
{
m_pInstance = NULL;
}
static CSingleton *m_pInstance;
};
/*
1.一定要放在类定义后面初始化,放到前面就会报错。
2.一定要对这个静态类成员变量初始化,否则编译时报引用了未定义成员的错误。
*/
CSingleton* CSingleton::m_pInstance = 0;
int main(int argc, char** argv)
{
CSingleton *m_pInstance1 = CSingleton::GetInstance();
m_pInstance1->HelloWorld();
return 0;
}