C++中的单子(最多只能有一个对象)
2016-07-08 08:46
603 查看
静态成员变量和私有构造函数的使用,一般的类的构造函数都是public的,在这里,构造函数一定要是private,这样才能保证任何时候最多只有一个对象。
#include <iostream> using namespace std; class Singleton { private: static Singleton* cInstance; Singleton(); //在这里构造函数一定要是私有的 public: static Singleton* getInstance(); void print(); }; Singleton* Singleton::cInstance = NULL; Singleton::Singleton() { } Singleton* Singleton::getInstance() { if(cInstance==NULL) { cInstance = new Singleton(); } return cInstance; } void Singleton::print() { cout << "I am a Singleton..."<<endl; } int main() { Singleton* s=Singleton::getInstance(); //OK Singleton* s1=Singleton::getInstance(); //调用静态成员函数,共享静态成员变量,返回s的地址, Singleton* s2=Singleton::getInstance(); //调用静态成员函数,共享静态成员变量,返回s的地址, cout<<s <<endl<< s1 <<endl<< s2 << endl; s->print(); s1->print(); s2->print(); cout << "---end---" << endl; return 0; } /* 0x4c2fc8 0x4c2fc8 0x4c2fc8 I am a Singleton... I am a Singleton... I am a Singleton... ---end--- */
相关文章推荐
- Enigma机密码加密解密的实现
- C++匿名命名空间
- C语言运算符优先级 之 快速记忆
- c语言学习进程
- iOS-C语言-C语言的介绍以及第一个例子HelloWorld
- C++ 函数后加const
- VS2010 Win7 64位 C++ MFC DataGrid绑定实例
- C++ delete 和delete[] 的区别
- 再探C++Primer (5)const限定符
- 再探C++Primer(6) 标准库类型string、vector和迭代器
- OpenCV学习C++接口:图像遍历+像素压缩
- 一起talk C栗子吧(第一百七十三回:C语言实例--关闭终端中的缓冲功能一)
- C++ 最近面试题中遇到的一些问题
- 提高项目26.2-查成绩2
- 一个简单c语言windows程序的实现
- 查漏补缺——类(C++ Primer)
- C++ 读取 pcap文件
- 提高项目26.1-查成绩
- C语言中实现数组的动态增长
- 提高项目25.3选择排序