C++ 单例模式(读书笔记)
#include <iostream>
class Singleton {
static Singleton s;
int i;
Singleton(int x):i(x) {}
Singleton& operator=(Singleton&);
Singleton(const Singleton&);
public:
static Singleton& instance() {return s;}
int getValue() {return i;}
void setValue(int x) {i=x;}
};
Singleton Singleton::s(47);
int main() {
Singleton& s=Singleton::instance();
std::cout<<s.getValue()<<std::endl;
Singleton& s2=Singleton::instance();
s2.setValue(9);
std::cout<<s.getValue()<<std::endl;
return 0;
}
创建一个单例模式的关键是防止客户程序员获得任何控制其对象生存期的权利。为了做到这一点,
声明所有的构造函数为私有,并且防止编译器隐式生成任何构造函数。拷贝构造函数和赋值操作符
被声明为私有,以便防止任何这类复制的动作产生。还必须决定如何去创建这个对象。在这里,它
是被静态创建的,但也可以等待,直到客户程序员提出要求再根据要求进行创建。这种方式称作惰
性初始化,这种做法,只在创建对象的代价不大,并且不总是需要它的情况下才有意义。