1、单例模式(饿汉模式)
class CSingleton
{
private :
CSingleton ( ) { cout << "单例对象创建!" << endl; } ;
CSingleton ( const CSingleton & ) ;
CSingleton& operator = ( const CSingleton & ) ;
~ CSingleton ( ) { cout << "单例对象销毁!" << endl; } ;
static CSingleton myInstance;
public :
static CSingleton* getInstance ( )
{
return & myInstance;
}
} ;
2、单例模式(懒汉模式)
class CSingleton
{
private :
CSingleton ( )
{
}
static CSingleton * m_pInstance;
public :
static CSingleton * GetInstance ( )
{
if ( m_pInstance == NULL )
m_pInstance = new CSingleton ( ) ;
return m_pInstance;
}
} ;
三、懒汉模式线程安全经典实现
class single
{
private :
single ( ) { }
~ single ( ) { }
static single * p;
static mutex mtx;
public :
single * GetInstance ( )
{
mtx. lock ( ) ;
if ( p == nullptr )
{
p = new single ( ) ;
}
mtx. unlock ( ) ;
return p;
}
}