C++ 单例模式(读书笔记)
2024-08-30 21:05:14
#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;
}
创建一个单例模式的关键是防止客户程序员获得任何控制其对象生存期的权利。为了做到这一点,
声明所有的构造函数为私有,并且防止编译器隐式生成任何构造函数。拷贝构造函数和赋值操作符
被声明为私有,以便防止任何这类复制的动作产生。还必须决定如何去创建这个对象。在这里,它
是被静态创建的,但也可以等待,直到客户程序员提出要求再根据要求进行创建。这种方式称作惰
性初始化,这种做法,只在创建对象的代价不大,并且不总是需要它的情况下才有意义。
最新文章
- 用原生javascript实现在页面动态显示时间
- springmvc 动态代理 JDK实现与模拟JDK纯手写实现。
- SQL 基本知识
- Windows And Video Memory
- java获取路径的方法
- Web开发中错误页面的配置
- const和readonly的区别
- memcpy的用法总结
- 关于HTML Input
- HTML5之画布的拖拽/拖放
- Struts2--Global Result全局结果集
- git常用命令集合
- css实现多行多列的布局
- Cocos2D:塔防游戏制作之旅(一)
- 使用Rapidxml读取xml文件
- JavaScript match()方法和正则表达式match()
- Python_关于多线程下变量赋值取值的一点研究
- spring boot多模块项目找不到类
- ios一些问题
- <;NET CLR via c# 第4版>;笔记 第5章 基元类型、引用类型和值类型