/****单例模式要点:
一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
***/
#include <iostream>
using namespace std;
class CSingleton
{
public:
static CSingleton * GetInstance()
{
if(NULL == m_pInstance)
m_pInstance = new CSingleton();
return m_pInstance;
}
static void Release() //必须,否则会导致内存泄露
{
if(NULL != m_pInstance)
{
delete m_pInstance;
cout<<"this is CSingleton::Release()"<<endl;
m_pInstance = NULL;
}
}
protected:
CSingleton()
{
cout<<"CSingleton"<<endl;
};
static CSingleton * m_pInstance;
};
CSingleton* CSingleton::m_pInstance = NULL;
/***
class CSingleDraw:public CSingleton
{
public:
static CSingleDraw* GetInstance()
{
if(NULL == m_pInstance)
m_pInstance = new CSingleDraw();
return (CSingleDraw*)m_pInstance;
}
protected:
CSingleDraw()
{
cout<<"CSingleDraw"<<endl;
}
};
***/
int main()
{
// CSingleDraw* s1 = CSingleDraw::GetInstance();
// CSingleDraw* s2 = CSingleDraw::GetInstance();
CSingleton *s1=CSingleton::GetInstance();
CSingleton *s2=CSingleton::GetInstance();
s2->Release(); //this is CSingleton::Release()
s1->Release();
return 0;
}
单例模式
最新推荐文章于 2025-05-23 19:33:43 发布
本文深入探讨了单例模式的三大要点,并通过C++代码示例详细展示了单例模式的实现过程,包括实例创建、实例获取及资源释放。
1507

被折叠的 条评论
为什么被折叠?



