C++中Singleton的实现
这些东西在网上都很多了,但是我觉得他们的使用都不符合我的要求,所以自己动手丰衣足食,写一个自己能用的,够用就好。
#include <iostream> using namespace std; //单件模板类 template<typename T> class Singleton { protected: static T* m_Instance; Singleton(){} virtual~Singleton(){} public: //实例的获得 static T* Instance() { if(m_Instance==0) m_Instance=new T; return m_Instance; } //单件类的释放 virtual void Release() { if(m_Instance!=0) { delete m_Instance; m_Instance=0; } } }; //单件模板测试类 class Test:public Singleton<Test> { friend class Singleton<Test>; //声明为友员,不然会出错 protected: Test() { a=b=c=0; } virtual ~Test(){} public : int a; int b; int c; }; //初始化静态成员。。。 template<> Test*Singleton<Test>::m_Instance=0; //以下为测试代码 void main() { Test*t=Test::Instance(); t->a=5; t->b=25; t->c=35; cout<<"t: a="<<t->a<<" b="<<t->b<<" c="<<t->c<<endl; Test*t2; t2=Test::Instance(); cout<<"t2 a="<<t2->a<<" b="<<t2->b<<" c="<<t2->c<<endl; t2->Release(); } |
发表于 @ 2005年12月17日 17:38:00|评论(loading...)|编辑|收藏