#ifndef __Singleton_H__
#define __Singleton_H__
template <class T>
class Singleton{
public:
static T* GetInstance(){
_s_garbo; /// 防止编译器优化掉
if( _pInstance == NULL ){
_pInstance = new T();
}
assert( _pInstance != NULL );
return _pInstance;
}
protected:
Singleton(){}
private:
class Garbo{
public:
~Garbo(){ delete Singleton::_pInstance; }
};
/** \brief 只声明 不定义 禁止操作*/
Singleton( const Singleton<T> & );
/** \brief 只声明 不定义 禁止操作*/
Singleton& operator=(const Singleton<T> &);
private:
static T* _pInstance;
static Garbo _s_garbo;
};
template<class T>
T *Singleton<T>::_pInstance = NULL;
template<class T>
typename Singleton<T>::Garbo Singleton<T>::_s_garbo;
#endif
C++ 单例模板类 (非线程安全 还没升到那个等级 以后再改)
最新推荐文章于 2024-06-21 13:59:32 发布