// http://vdisk.weibo.com/s/dkyufB1yOD7Zm 23种设计模式说明pdf下载
// 说明:
// 1、为了不能被实例化,构造函数声明为 protected 或者直接声明为 private,如果使用new 则报错
// 2、使用类变量,static singleton *instance; 问题来了,这家伙必须被初始化才能用。(在29行)
#include <iostream>
using namespace std;
class singleton {
//构造函数
singleton() {
++test;
};
static singleton *instance;
public:
int test=0;
~singleton() {};
static singleton &get_instance(){
if(!instance)
instance = new singleton();
return *instance;
}
};
singleton *singleton::instance=nullptr;
int main(int argv, char **args){
cout<<singleton::get_instance().test;
// singleton *fptr=new singleton();
// ‘singleton::singleton()’ is private within this context
return 0;
}
编译:g++ Singleton.cpp
结果:
[lzc@localhost test]$ ./a.out
1