请高人给一个单例模式,感激不尽!
时间:2011-12-26
来源:互联网
请高人给一个单例模式的代码,感激不尽!
作者: tianlang279500 发布时间: 2011-12-26
是指单实例吗?看看这个:
C/C++ code
C/C++ code
#include <iostream> using namespace std; //单例类的C++实现 class Singleton { private: Singleton();//注意:构造方法私有 virtual ~Singleton(); static Singleton* instance;//惟一实例 int var;//成员变量(用于测试) public: static Singleton* GetInstance();//工厂方法(用来获得实例) int getVar();//获得var的值 void setVar(int);//设置var的值 }; //构造方法实现 Singleton::Singleton() { this->var = 20; cout<<"Singleton Constructor"<<endl; } Singleton::~Singleton() { delete instance; } //初始化静态成员 Singleton* Singleton::instance=new Singleton(); Singleton* Singleton::GetInstance() { return instance; } //seter && getter含数 int Singleton::getVar() { return this->var; } void Singleton::setVar(int var) { this->var = var; } //main int main(int argc, char* argv[]) { Singleton *ton1 = Singleton::GetInstance(); Singleton *ton2 = Singleton::GetInstance(); cout<<"ton1 var = "<<ton1->getVar()<<endl; ton1->setVar(150); cout<<"ton2 var = "<<ton2->getVar()<<endl; return 0; }
作者: riyueming184 发布时间: 2011-12-26
#include <iostream>
using namespace std;
class CSingleton
{
private:
static CSingleton *m_Instance;
CSingleton()
{}
CSingleton(const CSingleton& csi);
virtual ~CSingleton()
{
delete m_Instance;
}
public:
static CSingleton* GetInstance();
//用于生成的对象是否为同一个,即单例
void test()
{
cout < < "Address of m_Instance is : " < < &m_Instance < < endl;
}
};
CSingleton* CSingleton::m_Instance = NULL;
CSingleton* CSingleton::GetInstance()
{
if(NULL == m_Instance)
{
m_Instance = new CSingleton();
}
return m_Instance;
}
int main()
{
CSingleton *single = CSingleton::GetInstance();
single-> test();
CSingleton *single2 = CSingleton::GetInstance();
single2-> test();
return 0;
}
using namespace std;
class CSingleton
{
private:
static CSingleton *m_Instance;
CSingleton()
{}
CSingleton(const CSingleton& csi);
virtual ~CSingleton()
{
delete m_Instance;
}
public:
static CSingleton* GetInstance();
//用于生成的对象是否为同一个,即单例
void test()
{
cout < < "Address of m_Instance is : " < < &m_Instance < < endl;
}
};
CSingleton* CSingleton::m_Instance = NULL;
CSingleton* CSingleton::GetInstance()
{
if(NULL == m_Instance)
{
m_Instance = new CSingleton();
}
return m_Instance;
}
int main()
{
CSingleton *single = CSingleton::GetInstance();
single-> test();
CSingleton *single2 = CSingleton::GetInstance();
single2-> test();
return 0;
}
作者: ArvonZhang 发布时间: 2011-12-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28