当前位置: 首页 > news >正文

2.单例模式

一、定义

确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。

二、要解决的问题

  • 独生子女
    无论new了多少个对象,始终只存在一个实例
  • 应用场景
    对临界资源(例如日志、打印机)的访问

三、解决步骤

  1. 将构造函数声明成私有类型
  2. 声明一个类的静态实例
  3. 提供一个获得实例的方法

四、代码实现

4.1 实现方法1

下面这种方式存在以下问题

  • 只提供了getInstance方法获取对象,没有提供释放函数
  • 析构函数不会被运行
  • 多线程调用getInstance时将不是线程安全的
class Singleton
{
private:static Singleton* singleton;  //实例对象为私有Singleton()  //构造方法为私有{std::cout << "Singleton" << std::endl;}~Singleton(){std::cout << "~Singleton" << std::endl;}public:static Singleton& getInstance(){if (!singleton){singleton = new Singleton();}return *singleton;}void printAddress(){printf("%p\n", this);}
};Singleton* Singleton::singleton = nullptr;

4.2 实现方法2

改进点

  • 禁止单例模式的拷贝和赋值
  • 采用局部静态变量的方式返回,线程安全(c++11及以后)
  • 没有采用new关键字在堆空间中申请内存,空间被自动管理
  • 析构函数被自动执行
class Singleton
{
private:Singleton()  //构造方法为私有{std::cout << "Singleton" << std::endl;}~Singleton(){std::cout << "~Singleton" << std::endl;}//禁止拷贝和赋值Singleton(const Singleton& obj) = delete;Singleton& operator=(const Singleton& obj) = delete;public:static Singleton& getIntance(){static Singleton instance;return instance;}void printAddress(){printf("%p\n", this);}
};int main()
{Singleton::getIntance().printAddress();Singleton::getIntance().printAddress();
}
http://www.dtcms.com/a/276225.html

相关文章:

  • Vim的magic模式
  • blender uv小技巧
  • Python 包管理新时代:深入了解 `uv` 的使用与实践
  • OpenVela之模拟器调试
  • 【kubernetes】--Controller(StatefulSet)
  • 【PTA数据结构 | C语言版】链式队列的3个操作
  • Git常用命令一览
  • pyqt5界面开发学习
  • 034_多态的实现(编译时 / 运行时)
  • 洛谷 P11961 [GESP202503 五级] 原根判断-提高+/省选-
  • Vue工程化
  • Spring Boot 基础入门与实战:从框架理解到项目搭建
  • 如何检测自动化设备中的直线导轨品质是否优良?
  • Oracle 数据库实战项目
  • SAC : 具有随机Actor的离策略最大熵深度强化学习
  • Android开发中RxJava的使用与原理
  • 杨娇兽の阴谋
  • 基于springboot+Vue的二手物品交易的设计与实现
  • 休闲项目策划与设计实训室:赋能实践育人的重要平台
  • 【学习笔记】Nginx常用安全配置
  • arcgis投影后数据显示问题记录
  • 以电商平台性能测试为例,详细描述Jmeter性能测试步骤,及如何确定用户并发数、用户启动时间、循环次数的设置
  • 算法练习6-大数乘法(高精度乘法)
  • jenkins部署vue前端项目
  • 【TA/Unity】Shader基础结构
  • TCP套接字
  • 网络配置综合实验全攻略(对之前学习的总结)
  • 医学AI前沿论坛第6期|目前主流的医学AI基础模型有哪些?我们应该如何在有限的数据下构建高性能的基础模型?
  • 某某航空 (新版)同盾 blackbox 补环境
  • 迷宫可达性统计问题详解