单例模式——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.rhkb.cn/news/26393.html

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

相关文章

lqb官方题单-速成刷题清单(上) - python版

预计3月5日 Wednesday 前完成 【2025年3月1日&#xff0c;记】题目太简单了&#xff0c;3月3日前完成 蓝桥杯速成刷题清单&#xff08;上&#xff09; https://www.lanqiao.cn/problems/1216/learning/?problem_list_id30&page1 替换题号1216 目录 进度题解和碎碎念1. 排…

虚拟化园区网络部署指南

《虚拟化园区网络部署指南》属于博主的“园区网”专栏&#xff0c;若想成为HCIE&#xff0c;对于园区网相关的知识需要非常了解&#xff0c;更多关于园区网的内容博主会更新在“园区网”专栏里&#xff0c;请持续关注&#xff01; 一.前言 华为CloudCampus解决方案基于智简网络…

Java数据结构第十五期:走进二叉树的奇妙世界(四)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、二叉树OJ练习题&#xff08;续&#xff09; 1.1. 二叉树的层序遍历 1.2. 二叉树的最近公共祖先 1.3. 从前序与中序遍历序列构造二叉树 1.4. 从中序与后序遍历序列构造二叉树 1.5. 根据二叉树创建…

ISP 常见流程

1.sensor输出&#xff1a;一般为raw-OBpedestal。加pedestal避免减OB出现负值&#xff0c;同时保证信号超过ADC最小电压阈值&#xff0c;使信号落在ADC正常工作范围。 2. pedestal correction&#xff1a;移除sensor加的基底&#xff0c;确保后续处理信号起点正确。 3. Linea…

Java异常

一&#xff0c;Java异常概述 1.异常概述&#xff1a; 异常&#xff1a;在我们程序运行过程中出现的非正常情况 在开发中&#xff0c;即使我们的代码写的很完善&#xff0c;也有可能由于一些外因&#xff08;用户输入有误&#xff0c;文件被删除&#xff0c;网络问题&#xff…

Linux下的网络通信编程

在不同主机之间&#xff0c;进行进程间的通信。 1解决主机之间硬件的互通 2.解决主机之间软件的互通. 3.IP地址&#xff1a;来区分不同的主机&#xff08;软件地址&#xff09; 4.MAC地址&#xff1a;硬件地址 5.端口号&#xff1a;区分同一主机上的不同应用进程 网络协议…

Metal 学习笔记五:3D变换

在上一章中&#xff0c;您通过在 vertex 函数中计算position&#xff0c;来平移顶点和在屏幕上移动对象。但是&#xff0c;在 3D 空间中&#xff0c;您还想执行更多操作&#xff0c;例如旋转和缩放对象。您还需要一个场景内摄像机&#xff0c;以便您可以在场景中移动。 要移动…

数据集笔记:新加坡LTA MRT 车站出口、路灯 等位置数据集

1 MRT 车站出口 data.gov.sg &#xff08;geojson格式&#xff09; 1.1 kml格式 data.gov.sg 2 路灯 data.govsg ——geojson data.gov.sg——kml 版本 3 道路摄像头数据集 data.gov.sg 4 自行车道网络 data.gov.sg 5 学校区域 data.gov.sg 6 自行车停车架&#xff…

【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点

弹性裸金属服务器和神龙虚拟化&#xff08;一&#xff09;&#xff1a;功能特点 特征一&#xff1a;分钟级交付特征二&#xff1a;兼容 VPC、SLB、RDS 等云平台全业务特征三&#xff1a;兼容虚拟机镜像特征四&#xff1a;云盘启动和数据云盘动态热插拔特征五&#xff1a;虚拟机…

发展中的脑机接口:SSVEP特征提取技术

一、简介 脑机接口&#xff08;BCI&#xff09;是先进的系统&#xff0c;能够通过分析大脑信号与外部设备之间建立通信&#xff0c;帮助有障碍的人与环境互动。BCI通过分析大脑信号&#xff0c;提供了一种非侵入式、高效的方式&#xff0c;让人们与外部设备进行交流。BCI技术越…

EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案

随着互联网技术的飞速发展&#xff0c;实时音视频通信已成为各行各业数字化转型的核心需求之一。无论是远程办公、在线教育、智慧医疗&#xff0c;还是智能安防、直播互动&#xff0c;用户对低延迟、高可靠、跨平台的音视频通信需求日益增长。 一、WebRTC与WebP2P&#xff1a;实…

为AI聊天工具添加一个知识系统 之127 详细设计之68 编程 核心技术:Cognitive Protocol Language 之2

问题 Q1396、根据我们的讨论&#xff0c;我前面给出的文字表述在用词准确性上以及完整性&#xff08;忽略细节&#xff09; 您觉得有问题吗&#xff1f;有用词错误和 缺项的问题吗 Q1397、请对具体术语的数学定义或工程实现方案进行深度扩展说明 Q1398、 请为全部映射关系提供…

ELK接入SpringBoot【Docker Compose】

安装Docker-Compose curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose 随便找个地&#xff0c;创建docker-compose.yml文件&#xff0c;把这坨文本复制进去 version: 3 services:el…

基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

NAT 代理服务 内网穿透

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; NAT 技术背景二&#xff1a;&#x1f525; NAT IP 转换过程三&#xff1a;&#x1f525; NAPT四&#xff1a;&#x1f525; 代理服务器&#x1f98b; 正向…

Apache IoTDB 树表双模型直播回顾(下)

2 月 26 日面向 Apache IoTDB 树表双模型的功能特性、适用场景、建模选择和未来规划&#xff0c;田原同学通过直播进行了全面解答。以下为直播讲稿&#xff08;下&#xff09;&#xff0c;干货满满&#xff0c;建议收藏⬇️⬇️ ⚡️注意&#xff1a; 1. 功能演示部分请直接查看…

LabVIEW中交叉关联算法

交叉关联算法通过统计多通道信号间的相关性&#xff0c;抑制各通道独立的本底噪声&#xff0c;保留共有的有效信号成分。其数学本质为对多个通道信号进行两两相乘并累加&#xff0c;最终通过归一化处理得到降噪后的输出信号。 这个VI演示了如何在LabVIEW中执行信号的互相关分析…

手撸大模型-基础篇 简单线性回归模型预测房价

# NumPy Pandas Matplotlib import numpy as np import matplotlib.pyplot as plt 双特征&#xff0c;矩阵化 1. Min-Max 归一化及其逆操作 1.1 输入数据归一化 def normalize1(sample, data): max_value np.max(data) min_value np.min(data) return (samp…

使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法

使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法 引言 原文:On using the UA-Speech and TORGO databases to validate automatic dysarthric speech classification approaches 构音障碍简介 构音障碍是一种由于脑损伤或神经疾病(如脑瘫、肌萎缩侧索硬化症、帕金森…

React底层原理详解

React中Element&Fiber对象、WorkInProgress双缓存、Reconcile&Render&Commit、第一次挂载过程详解 在面试中介绍React底层原理时&#xff0c;需遵循逻辑清晰、层次分明、重点突出的原则&#xff0c;结合技术深度与实际应用场景。以下是结构化回答模板&#xff1a;…