??????????????????????????????????????ù???????????????????????????????????????????????????????????????????г?????鹲????к??????????????????飬??????????????GUI????????????MODEM??????????????????????綽??????????????????????????????PC??????????

???????????????????????????C++?У????????????????????????????????????????????????????? ?????????????????????????????????????????????????——?????????????????????????????????????????

?????????????????и??????????????????????????????????????о?????????????????????????????е?????????????????

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Singleton??????????????????????????????????????????????????Instance()????????????????????

???????????£?


class CSingleton
{
//???????
public:
static CSingleton* GetInstance()
{
      if ( m_pInstance == NULL )  //?ж???????ε???
        m_pInstance = new CSingleton();
        return m_pInstance;
}
private:
    CSingleton(){};
    static CSingleton * m_pInstance;
};


??????????????????????GetInstance()???????????????????????????κδ?????????????????????????????????е??GetInstance()?????????????????????????????????????α????????????????????????????——????GetInstance()???????????????????????


CSingleton* p1 = CSingleton :: GetInstance();
CSingleton* p2 = p1->GetInstance();
CSingleton & ref = * CSingleton :: GetInstance();


??????GetInstance?????????????????????????????????????????????????????????

??????????CSingleton????????????

????????????????????????m_pInstance??????????е??

??????????????е?????????????????????????????????????????????

?????????????????е??????????????????????????

??????????????????????????????????о??????????????m_pInstance?????????????????????????????????????????????????????У?

??????????????????????б????????????????????????????????????????????????????????????????????????????????????

?????????????????????GetInstance()????????????????delete????????????????????????????????a?????????????????????????????????????????????????????delete?????д????????GetInstance??????

????????????????????????????????????????????????????????????????????????????е???????????????????????????????С?

?????????????????????????????????????????е???????????????????????????е???????????????????Щ????????????????????????????????????????????????ж????????????????????????????????????????????????????????????????????????е?CGarbo??Garbo??????????????


class CSingleton
{
//???????
public:
static CSingleton* GetInstance();
private:
    CSingleton(){};
    static CSingleton * m_pInstance;
class CGarbo //????????????????????????CSingleton?????
{
        public:
            ~CGarbo()
            {
                if( CSingleton::m_pInstance )
                  delete CSingleton::m_pInstance;
}
         }
        Static CGabor Garbo; //????????????????????????????????????????????????
};