class Sig{public:static Sig* GetInstance(){static Sig s_sig;return &s_sig;}protected:Sig(){};Sig(const Sig& obj){};Sig& operator=(const Sig& obj);~Sig();};可作继承用的模板单例基类:template <typename T> class Singleton { public: static T& getInstance(){if(NULL == _instance){_instance = new T;}return (*_instance);}protected: Singleton() { assert(!_instance); _instance = static_cast<T*>(this); }~Singleton() { assert(_instance); _instance = 0; }Singleton(const Singleton& obj){};Singleton& operator=(const Singleton& obj);
protected:
static T* _instance;
};
template <typename T> T* Singleton<T>::_instance = 0;
use:class MySigClass: public Singleton<MySigClass>{...};
各位有更好的实现请指教.
单例模式的简单有用实现
最新推荐文章于 2021-12-08 23:11:22 发布