C++单例类的实现方法
来源:互联网 发布:网络歌手排行榜2009 编辑:程序博客网 时间:2024/05/05 23:24
这是一个C++单例类的实现方法。
#include "stdafx.h"#include <iostream> using namespace std; //单例类的C++实现 class Singleton { private: Singleton();//注意:构造方法私有 static Singleton* instance;//惟一实例 int var;//成员变量(用于测试) public: static Singleton* GetInstance();//工厂方法(用来获得实例) int getVar();//获得var的值 }; //构造方法实现 Singleton::Singleton() { this->var = 20; cout<<"Singleton Constructor"<<endl; } //初始化静态成员 Singleton* Singleton::instance=new Singleton(); //这条等于这个new Singleton(),//是因为有这个this->var,this是本类的对象Singleton* Singleton::GetInstance() { return instance; } int Singleton::getVar() { return this->var; } //main int main(int argc, char* argv[]) { Singleton *ton1 = Singleton::GetInstance(); cout<<"ton1 var = "<<ton1->getVar()<<endl; system("pause");return 0; }
与上面的程序相比,下面的程序增加了保护性。
/*C++单例模式的实现*/ #include "stdafx.h"#include <iostream> using namespace std; class Singleton { public: static Singleton* getInstance();//一个类方法,返回Single类型指针 void setValue(int); int getValue(); ~Singleton(); private: Singleton();//构造函数私有 static Singleton* instance;//唯一一个实例 int value; }; Singleton* Singleton::instance=NULL;//必须类外定义初值NULL Singleton* Singleton::getInstance() { if (NULL==instance) { instance=new Singleton(); } return instance; } Singleton::Singleton() { this->value=100; cout<<"Singleton Constructor!!!"<<endl; } Singleton::~Singleton() { cout<<"Singleton Destructor!!!"<<endl; } int Singleton::getValue() { return this->value; } void Singleton::setValue(int v) { value=v; } //测试程序 int main() { Singleton* s1=Singleton::getInstance(); Singleton* s2=Singleton::getInstance(); if(s1==s2) cout<<"s1,s2相等,并指向唯一一个单例实例"<<endl; cout<<"s1指向的实例的value等于"<<s1->getValue()<<endl; cout<<"s2指向的实例的value等于"<<s2->getValue()<<endl; s1->setValue(200); cout<<"s1指向的实例的value等于"<<s1->getValue()<<endl; cout<<"s2指向的实例的value等于"<<s2->getValue()<<endl; delete Singleton::getInstance(); system("pause");return 0; }
0 0
- Objective-C方法的实现
- 各种排序方法的C语言实现
- c语言实现积分的方法
- C函数实现返回多个值的方法
- C#QuotedStr方法实现,引号的处理
- C语言字符串相关方法的实现
- C语言四舍五入的实现方法。
- Objective-C - 方法的声明和实现
- 字符串动态数组的C实现方法
- C语言中strcat的实现方法
- C中strstr的实现方法
- C#中继承的代码实现方法。
- c实现程序暂停的方法
- C/C++实现三角函数的方法
- C/C++/VC 实现字符串逆转的多种方法
- 用c实现的各种排序的方法
- C语言的strtoul,stratal方法的java实现
- 两数求最大公约数的三种方法的C语言实现
- 关于大型网站技术演进的思考(三)--存储的瓶颈(3)
- CGFloat和float的区别
- 多线程demo-ThreadLocal面向对象的封装
- 《八车道投巨资批量投入五菱汽车用于旗下平台推广》
- css3中-webkit-text-size-adjust详解
- C++单例类的实现方法
- 单片机代码模板——参照TI公司样例、林锐博士《高质量C /C 编程指南 》——环境CCS(基于Eclipse)
- 关于大型网站技术演进的思考(四)--存储的瓶颈(4)
- 关于大型网站技术演进的思考(五)--存储的瓶颈(5)
- Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用
- RESTful HTTP的实践
- hibernate FetchType理解
- Eclipse报错无法进入
- url 编码