单例模式——c++

一个类,只能有1个对象        (对象在堆空间)
再次创建该对象,直接引用之前的对象

so构造函数不能随意调用
so构造函数私有
so对象不能构造

如何调用私有化的构造函数:
公开接口调用构造函数

调用构造函数:singleTon instance;
但return instance 之后,产生拷贝构造,就不单例了
so删除拷贝构造函数:        singleTon(const singleTon& r) = delete;

不能返回引用,因为构造的是局部变量
    
构造函数用 new 调用

调用构造函数之前,判断一下是否存在唯一对象:
static singleTon* instance = NULL;
if(instance == NULL){
    instance = new singleTon();
}

class singleTon{
private:singleTon(){}
public:singleTon(const singleTon& r) = delete; // 删除拷贝构造函数static singleTon* getInstance(){static singleTon* instance = NULL;if(instance == NULL){sleep(1);instance = new singleTon();}return instance;}                                                                  
};
int main(int argc,const char** argv){singleTon* s1 = singleTon::getInstance();singleTon* s2 = singleTon::getInstance();cout << s1 << endl;cout << s2 << endl;
}

getIntance 就是构造函数,创建对象用的
有内部的逻辑处理:无论如何创建对象,创建多少个对象,所有对象永远是同一个 

懒汉单例模式

仅当要用单例,才会创建单例对象(上面就是)

多线程不安全

懒汉:催一下工作一下,催一下工作一下

饿汉单例模式

不管单例对象用不用,反正先申请

多线程安全

饿汉吃放,对于食物不管是否吃得下,不管吃不吃,反正都要摆在面前

懒汉单例和饿汉单例的优缺点

懒汉:
缺点:

  • 多线程不安全 
  • 逻辑比较复杂

优点:

  • 节省空间
  • 允许随时删除,随时构造

饿汉:
优点:

  • 多线程安全
  • 逻辑非常简单

缺点:

  • 消耗空间
  • 在程序结束之前,绝对不允许销毁对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReentrantLock 底层实现

一、核心概念 1 - CAS CAS&#xff08;Compare-And-Swap&#xff0c;比较并交换&#xff09;操作是一种无锁的原子操作&#xff0c;它在多线程环境下能够保证线程安全&#xff0c;主要是通过硬件级别的原子性以及乐观锁的思想来实现的。以下详细介绍 CAS 操作保证线程安全的原…

NLP学习记录十:多头注意力

一、单头注意力 单头注意力的大致流程如下&#xff1a; ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层&#xff08;Wq、Wk、Wv&#xff09;后得到查询Q、键K和值V&#xff1b; ② 查询Q和键K经过注意力评分函数&#xff08;如&#xff1a;缩放点积运算&am…

算法-二叉树篇08-完全二叉树的节点个数

完全二叉树的节点个数 力扣题目链接 题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴&#xff1a;可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题&#xff0c;并非是软件内自主实现的PDF合并&#xff0c;而是调用的pdftk这一工具&#xff0c;但楼主并没有提供pdftk&#xff0c;而…

微软云和金山云和k8有什么区别

Kubernetes&#xff08;K8s&#xff09;和微软云&#xff08;Microsoft Cloud&#xff09;是两种不同的技术&#xff0c;分别用于不同的目的。Kubernetes是一个开源的容器编排系统&#xff0c;用于自动化部署、扩展和管理容器化应用程序&#xff0c;而微软云是一个提供多种云服…

libGL.so.1: cannot open shared object file: No such file or directory-linux022

in <module> from PyQt5.QtGui import QPixmap, QFont, QIcon ImportError: libGL.so.1: cannot open shared object file: No such file or directory 这个错误信息表示XXXX 在启动时遇到问题&#xff0c;缺少 libGL.so.1 文件。libGL.so.1 是与 OpenGL 图形库相关的共…

渗透测试【seacms V9】

搭建seacms环境 我选择在虚拟机中用宝塔搭建环境 将在官网选择的下载下来的文件解压后拖入宝塔面板的文件中 创建网站 添加站点 搭建完成seacmsV9 找到一个报错口 代码分析 <?php set_time_limit(0); error_reporting(0); $verMsg V6.x UTF8; $s_lang utf-8; $dfDbn…

论文阅读笔记:Continual Forgetting for Pre-trained Vision Models

论文阅读笔记&#xff1a;Continual Forgetting for Pre-trained Vision Models 1 背景2 创新点3 方法4 模块4.1 问题设置4.2 LoRA4.3 概述4.4 GS-LoRA4.5 损失函数 5 效果6 结论 1 背景 出于隐私和安全考虑&#xff0c;如今从预先训练的视觉模型中删除不需要的信息的需求越来…

车载DoIP诊断框架 --- 连接 DoIP ECU/车辆的故障排除

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【爬虫基础】第二部分 爬虫基础理论 P1/3

上节内容回顾&#xff1a;【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客 【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客 【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客 爬虫相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff…

Compose 手势处理,增进交互体验

Compose 手势处理&#xff0c;增进交互体验 概述常用手势处理Modifierclickable()combinedClickable()draggable()swipeable()transformable()scrollable()nestedScrollNestedScrollConnectionNestedScrollDispatcher 定制手势处理使用 PointerInput ModifierPointerInputScope…

ue5 3dcesium中从本地配置文件读取路3dtilles的路径

关卡蓝图中获得3dtiles的引用 拉出设置url 设置路径 至于设置的路径从哪里来 可以使用varest读取文件里的接送字符串 path中配置地址 path变量的值为: Data/VillageStartMapConfig.json此地址代表content的地下的data文件夹里的config.json文件 {"FilePath": &quo…

音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介

一、引言 RTP封装H.264时&#xff0c;RTP对NALU Header的nal_unit_type附加了扩展含义。 由《音视频入门基础&#xff1a;H.264专题&#xff08;4&#xff09;——NALU Header&#xff1a;forbidden_zero_bit、nal_ref_idc、nal_unit_type简介》可以知道&#xff0c;nal_unit…

搜索赋能:大型语言模型的知识增强与智能提升

引言 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;取得了显著的进展&#xff0c;并在各个领域展现出强大的能力。然而&#xff0c;LLM也存在一些局限性&#xff0c;尤其是在知识库方面。由于训练数据的局限性&#xff0c;LLM无法获取最新的知识&#xff0c;也无…

EX_25/2/24

写一个三角形类&#xff0c;拥有私有成员 a,b,c 三条边 写好构造函数初始化 abc 以及 abc 的set get 接口 再写一个等腰三角形类&#xff0c;继承自三角形类 1&#xff1a;写好构造函数&#xff0c;初始化三条边 2&#xff1a;要求无论如何&#xff0c;等腰三角形类对象&#x…

nv docker image 下载与使用命令备忘

1&#xff0c;系统需求 Requirements for GPU Simulation GPU Architectures Volta, Turing, Ampere, Ada, Hopper NVIDIA GPU with Compute Capability 7.0 CUDA 11.x (Driver 470.57.02), 12.x (Driver 525.60.13) Supported Systems CPU architectures x86_64, ARM…

学习记录:初次学习使用transformers进行大模型微调

初次使用transformers进行大模型微调 环境&#xff1a; 电脑配置&#xff1a; 笔记本电脑&#xff1a;I5&#xff08;6核12线程&#xff09; 16G RTX3070&#xff08;8G显存&#xff09; 需要自行解决科学上网 Python环境&#xff1a; python版本:3.8.8 大模型&#xff1a…

【Java学习】Object类与接口

面向对象系列五 一、引用 1.自调传自与this类型 2.类变量引用 3.重写时的发生 二、Object类 1.toString 2.equals 3.hashCode 4.clone 三、排序规则接口 1.Comparable 2.Comparator 一、引用 1.自调传自与this类型 似复刻变量调用里面的非静态方法时&#xff0c;都…

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…

Vscode无法加载文件,因为在此系统上禁止运行脚本

1.在 vscode 终端执行 get-ExecutionPolicy 如果返回是Restricted&#xff0c;说明是禁止状态。 2.在 vscode 终端执行set-ExecutionPolicy RemoteSigned 爆红说明没有设置成功 3.在 vscode 终端执行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 然后成功后你再在终…