您的位置:首页 > 编程语言 > C语言/C++

C++中Singleton的实现

2005-12-17 17:38 267 查看
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();
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: