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;
}
创建一个单例模式的关键是防止客户程序员获得任何控制其对象生存期的权利。为了做到这一点,
声明所有的构造函数为私有,并且防止编译器隐式生成任何构造函数。拷贝构造函数和赋值操作符
被声明为私有,以便防止任何这类复制的动作产生。还必须决定如何去创建这个对象。在这里,它
是被静态创建的,但也可以等待,直到客户程序员提出要求再根据要求进行创建。这种方式称作惰
性初始化,这种做法,只在创建对象的代价不大,并且不总是需要它的情况下才有意义。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现