//SingleClass.h
class SingleClass
{
private:
SingleClass();
~SingleClass();
public:
static SingleClass *Create();
static void Release();
protected:
static SingleClass *g_pInstance;
staic size_t g_Ref;
};
//SingleClass.cpp
SingleClass *SingleClass::g_pInstance=nullptr;
size_t SingleClass::g_Ref=0;
SingleClass *SingleClass::Create()
{
if(g_pInstance==nullptr)
{
g_pInstance=new SingleClass;
}
++g_Ref;
return g_pInstance;
}
void SingleClass::Release()
{
if(g_Ref>0)
{
--g_Ref;
}
if(g_Ref==0)
{
if(g_pInstance)
{
delete g_pInstance;
g_pInstance=nullptr;
}
}
}
//友元
class SingleClass
{
private:
SingleClass();
~SingleClass();
public:
friend SingleClass *Creat();
friend void Release();
};
static SingleClass *g_pInstance=nullptr;
SingleClass *Create()
{
if(g_pInstance==nullptr)
{
g_pInstance=new SingleClass;
}
return g_pInstance;
}
void Release()
{
if(g_pInstance)
{
delete g_pInstance;
g_pInstance=nullptr;
}
}