???????Singleton?????????????????

????Singleton??ò?????new????????洢??????new?????????????????????????????????????????壬???????????????????ó?????????????????delete?????????????????????????????????????????????????Singleton???????????????????????á????????????????????涯?????????????????????????????????????????????GetInstance()???в?????????????????????????????


CSingleton* CSingleton :: GetInstance()
{
    static CSingleton inst??
    return &inst??
}


?????????????????inst?????ε???GetInstance()?????????????????????ó???????????m_pInstance??????????????????????????????????????????????ó????????????????????????????????????????

??????????


//?汾?
#include <iostream>
using namespace std;
//???????C++???
class Singleton
{
private:
       Singleton();//???:?????????
       static Singleton* instance;//Ω????
       int var;//???????(???????)
public:
       static Singleton* GetInstance();//????????(??????????)
       int getVar();//???var???
       void setVar(int);//????var???
       virtual ~Singleton();
};
//?????????
Singleton::Singleton()
{
       this->var = 20;
       cout<<"Singleton Constructor"<<endl;
}
Singleton::~Singleton()
{
       cout<<"Singleton Destructor"<<endl;
       //delete instance;
}
//???????????
/*Singleton* Singleton::instance=NULL;
Singleton* Singleton::GetInstance()
{
       if(NULL==instance)
              instance=new Singleton();
       return instance;
}*/
Singleton* Singleton::instance=new Singleton;
Singleton* Singleton::GetInstance()
{
       return instance;
}
//seter && getter????
int Singleton::getVar()
{
       return this->var;
}
void Singleton::setVar(int var)
{
       this->var = var;
}
//main
void main()
{
       Singleton *ton1 = Singleton::GetInstance();
       Singleton *ton2 = Singleton::GetInstance();
      if(ton1==ton2)
              cout<<"ton1==ton2"<<endl;
       cout<<"ton1 var = "<<ton1->getVar()<<endl;
       cout<<"ton2 var = "<<ton2->getVar()<<endl;
       ton1->setVar(150);
       cout<<"ton1 var = "<<ton1->getVar()<<endl;
       cout<<"ton2 var = "<<ton2->getVar()<<endl;
       delete Singleton::GetInstance();//????????????

}