#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;
}

创建一个单例模式的关键是防止客户程序员获得任何控制其对象生存期的权利。为了做到这一点,

声明所有的构造函数为私有,并且防止编译器隐式生成任何构造函数。拷贝构造函数和赋值操作符

被声明为私有,以便防止任何这类复制的动作产生。还必须决定如何去创建这个对象。在这里,它

是被静态创建的,但也可以等待,直到客户程序员提出要求再根据要求进行创建。这种方式称作惰

性初始化,这种做法,只在创建对象的代价不大,并且不总是需要它的情况下才有意义。

最新文章

  1. 用原生javascript实现在页面动态显示时间
  2. springmvc 动态代理 JDK实现与模拟JDK纯手写实现。
  3. SQL 基本知识
  4. Windows And Video Memory
  5. java获取路径的方法
  6. Web开发中错误页面的配置
  7. const和readonly的区别
  8. memcpy的用法总结
  9. 关于HTML Input
  10. HTML5之画布的拖拽/拖放
  11. Struts2--Global Result全局结果集
  12. git常用命令集合
  13. css实现多行多列的布局
  14. Cocos2D:塔防游戏制作之旅(一)
  15. 使用Rapidxml读取xml文件
  16. JavaScript match()方法和正则表达式match()
  17. Python_关于多线程下变量赋值取值的一点研究
  18. spring boot多模块项目找不到类
  19. ios一些问题
  20. &lt;NET CLR via c# 第4版&gt;笔记 第5章 基元类型、引用类型和值类型

热门文章

  1. (转)Struts2快速入门
  2. Codeforces_733C
  3. S3C2440中断
  4. 最新 Xilinx vivado IP许可申请
  5. ceph对接openstack环境
  6. 2 Button
  7. 经典的GDB调试命令,包括查看变量,查看内存
  8. js  计算是今天多少周
  9. linux环境图数据库neo4j安装
  10. 基于Composer的Laravel扩展包开发工作流