#include <iostream>
using namespace std;
class CSingleton
{
private:
CSingleton() //构造函数是私有的
{
cout<<"调用构造器\n";
}
static CSingleton *m_pInstance;//声明
public:
static CSingleton *GetInstance()
{
if(m_pInstance == nullptr) //判断是否第一次调用
{
m_pInstance = new CSingleton();//调用构造器
cout<<"第一次调用\n";
}
else
cout<<"没有创建新的实例\n";
return m_pInstance;
}
};
CSingleton *CSingleton::m_pInstance = nullptr;//类中声明的静态数据,需要在类外面再定义一次
int main()
{
CSingleton* p1 = CSingleton::GetInstance();
CSingleton* p2 = p1->GetInstance();
delete p1;
delete p2;
return 0;
}
程序的输出为:
调用构造器
第一次调用
没有创建新的实例