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

c++——单例模式

c++单例模式

1、概念:

单例模式确保一个类只有一个实例,并提供一个全局访问点以获取该实例。这通常通过让类的构造函数为私有,以防止外部直接实例化,然后提供一个静态方法来获取实例。

2、实现方法:

实现单例模式的主要步骤包括:
①将类的构造函数和拷贝构造函数声明为私有,以防止外部直接实例化。
②提供一个静态私有成员变量来保存单例实例。
③提供一个静态公共方法,该方法用于获取单例实例。如果实例不存在,则创建实例并返回;如果实例已存在,则直接返回。

3、代码案例:

#include <iostream>
#include <mutex>
using namespace std;class Singleton {private:// 私有静态成员变量,用于保存单例实例static Singleton* instance;static mutex mtx;  // 用于线程安全的互斥锁// 私有构造函数,防止外部实例化Singleton() {}// 拷贝构造私有化,防止外部实例化Singleton(const Singleton& obj) {}public:// 静态方法,用于获取单例实例static Singleton* getInstance() {lock_guard<mutex> lock(mtx);  // 线程安全的锁定if (instance == nullptr) {instance = new Singleton();}return instance;}void showMessage() { cout << "Hello from Singleton!" << endl; }
};// 初始化静态成员变量
Singleton* Singleton::instance = nullptr;
mutex Singleton::mtx;int main() {Singleton* singleton1 = Singleton::getInstance();singleton1->showMessage();Singleton* singleton2 = Singleton::getInstance();singleton2->showMessage();// 两个实例是同一个,只有一个实例被创建if (singleton1 == singleton2) {cout << "Both instances are the same." << endl;}return 0;
}

相关文章:

c++——单例模式

c单例模式 1、概念&#xff1a; 单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点以获取该实例。这通常通过让类的构造函数为私有&#xff0c;以防止外部直接实例化&#xff0c;然后提供一个静态方法来获取实例。 2、实现方法&#xff1a; 实现单例模式的主…...

C# 流Stream详解(2)——FileStream、BinaryReader、MemorySream、SreamReader等之间的关系

【文件流】 电脑上的文件有很多&#xff0c;文本文件、音频文件、视频文件、图片文件等&#xff0c;这些文件会被持久化存储在磁盘上&#xff0c;其本质都是一堆二进制数据。 FileStream用于读取二进制文件。电脑上的所有文件&#xff0c;不管是文本、音频、视频还是其他任意…...

【JavaSE】详解final关键字

在Java中&#xff0c;final可以用来修饰类、方法和变量。final修饰类&#xff0c;表示该类无法被继承&#xff0c;并且此类的设计已被认为很完美而不需要进行修改或扩展。final修饰类中的方法&#xff0c;表示不可以被重写&#xff1b;也就是把该方法锁定了&#xff0c;以防止继…...

问道管理:机器人概念走势活跃,新时达涨停,拓斯达、丰立智能等大涨

机器人概念17日盘中走势活跃&#xff0c;到发稿&#xff0c;拓斯达大涨18%&#xff0c;昊志机电涨近16%&#xff0c;丰立智能涨超13%&#xff0c;步科股份、优德精细涨超10%&#xff0c;新时达涨停&#xff0c;天玑科技、兆龙互联、中大力德涨逾9%。 消息面上&#xff0c;8月16…...

elementui 修改日期选择器el-date-picker样式

1. 案例&#xff1a; 2. css /* 最外层颜色 */ .el-popper.is-pure {background: url("/assets/imgList/memuBG.png") no-repeat;border: none;background-size:100% 100%}/* 日期 1.背景透明 */ .el-date-picker{background: transparent; }/* 日期 2.标题、左右图…...

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-RequestParam &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c…...

数据可视化:图表绘制详解

数据可视化是一种将抽象的数字和数据转化为直观图形的技术&#xff0c;使数据的模式、趋势和关系一目了然。本文将详细介绍如何绘制各种类型的图表&#xff0c;包括柱状图、折线图、饼图、散点图和热力图等。 第一部分&#xff1a;图表类型和选择 1. 柱状图 柱状图是用于比较类…...

【中危】Apache Ivy<2.5.2 存在XXE漏洞 (CVE-2022-46751)

漏洞描述 Apache Ivy 是一个管理基于 ANT 项目依赖关系的开源工具&#xff0c;文档类型定义(DTD)是一种文档类型定义语言,它用于定义XML文档中所包含的元素以及元素之间的关系。 Apache Ivy 2.5.2之前版本中&#xff0c;当解析自身配置、Ivy 文件或 Apache Maven 的 POM 文件…...

C#使用自定义的比较器对版本号(编码)字符串进行排序

给定一些数据&#xff0c;如下所示: “1.10.1.1.1.2”, “1.1”, “2.2”, “1.1.1.1”, “1.1.3.1”, “1.1.1”, “2.10.1.1.1”, “1.1.2.1”, “1.2.1.1”, “2.5.1.1”, “1.10.1.1”, “1.10.2.1”, “1.11.3.1”, “1.11.12.1”, “1.11.11.1”, “1.11.3.1”, “1”, “…...

AI在日常生活中的应用:从语音助手到自动驾驶

文章目录 AI的定义和发展AI在日常生活中的应用1. **智能语音助手**2. **智能家居**3. **智能医疗**4. **自动驾驶** 代码示例&#xff1a;使用Python实现基于机器学习的图片分类AI的未来前景结论 &#x1f389;欢迎来到AIGC人工智能专栏~探索AI在日常生活中的应用 ☆* o(≧▽≦…...

Windows10查看图片的分辨率

文章目录 查看方法 查看方法 鼠标悬停在想查看分辨率大小的图片上&#xff0c;稍等那么零点几秒&#xff0c;就会弹出图片的分辨率信息&#xff0c;如图所示&#xff1a;...

Spring事务和事务传播机制(2)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中&#xff0c;事务管理是一种用于维护数据库操作的一致性和…...

计算机视觉 -- 图像分割

文章目录 1. 图像分割2. FCN2.1 语义分割– FCN &#xff08;Fully Convolutional Networks&#xff09;2.2 FCN--deconv2.3 Unpool2.4 拓展–DeconvNet 3. 实例分割3.1 实例分割--Mask R-CNN3.2 Mask R-CNN3.3 Faster R-CNN与 Mask R-CNN3.4 Mask R-CNN&#xff1a;Resnet1013…...

ubuntu18.04复现yolo v8之CUDA与pytorch版本问题以及多CUDA版本安装及切换

最近在复现yolo v8的程序&#xff0c;特记录一下过程 环境&#xff1a;ubuntu18.04ros melodic 小知识&#xff1a;GPU并行计算能力高于CPU—B站UP主说的 Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA&#xff0c;不必删除之前的CUDA&#xff0c;…...

Redis三种模式——主从复制,哨兵模式,集群

目录 一、主从复制 1.1主从复制的概念 1.2Redis主从复制作用 1.2.1数据冗余 1.2.2故障恢复 1.2.3负载均衡 1.2.4高可用基石 1.3Redis主从复制流程 1.4部署Redis 主从复制 1.4.1.环境部署 1.4.2.所有服务器都先关闭防火墙 1.4.3.所有服务器都安装Redis 1.4.4修改Master主节点R…...

mysql8.0.31新增只读远程普通用户

在 MySQL 8.0.31 中&#xff0c;可以通过以下步骤新增只读远程普通用户&#xff1a; 1、使用 root 用户登录 MySQL 数据库。 mysql -u root -p 2、创建用户&#xff1a; CREATE USER username% IDENTIFIED WITH mysql_native_password BY password ; 其中&#xff0c;username…...

揭开路由协议隐藏的风险

路由协议在互联网和基于其的服务的运行中发挥着至关重要的作用。然而&#xff0c;许多这些协议的开发都没有考虑到安全问题。 例如&#xff0c;边界网关协议 (BGP) 最初并未考虑对等点之间发生攻击的可能性。过去几十年来&#xff0c;BGP 中的起源和路径验证已投入了大量工作。…...

图片因固定宽高被拉伸了?object-fit:一个神奇的属性

一、问题产生的场景 近期在完成项目开发时&#xff0c;测试人员针对漫画长图上传后的展示提出了一个界面优化的点&#xff0c;因为其特点是长&#xff0c;但是我们展示图片的区域是固定的&#xff0c;如果我们按照正常思路将图片的宽高写死&#xff0c;确实占位大小的问题解决了…...

客户案例:中圣科技—CAC2.0防范盗号威胁,加固安全防线

客户背景 中圣科技&#xff08;江苏&#xff09;股份有限公司&#xff08;以下简称“中圣科技”&#xff09;&#xff0c;是一家以技术研发为驱动&#xff0c;以清洁能源核心成套装备和节能环保工程服务为支撑的科技创新型企业。其以南京为核心运营基地&#xff0c;与当地政府…...

pandas数据分析40——读取 excel 合并单元格的表头

案例背景 真的很容易疯....上班的单位的表格都是不同的人做的&#xff0c;所以就会出现各种合并单元格的情况&#xff0c;要知道我们用pandas读取数据最怕合并单元格了&#xff0c;因为没规律...可能前几列没合并&#xff0c;后面几列又合并了....而且pandas对于索引很严格&am…...

学术研究项目中利用taotoken便捷调用多种模型进行实验对比

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 学术研究项目中利用Taotoken便捷调用多种模型进行实验对比 在算法研究、自然语言处理或人工智能相关领域的学术项目中&#xff0c;…...

[具身智能-629]:为什么语音有这么多接口类型

一句话核心&#xff1a;不同场景、距离、音质、功耗、算力、布线、抗干扰需求&#xff0c;逼出了不同语音接口&#xff0c;没有一种能通吃所有。我们用最通俗、工程化的逻辑讲&#xff0c;听完彻底详解&#xff1a;1. 先分两大类&#xff1a;模拟声音 vs 数字声音① 模拟接口&a…...

从根目录到数据区:FAT16与FAT32目录结构差异全解析

1. FAT文件系统基础认知 第一次接触FAT文件系统时&#xff0c;很多人都会被各种专业术语绕晕。其实理解它并不难&#xff0c;我们可以把整个存储设备想象成一本厚厚的记事本。这本记事本最前面有几页固定的"使用说明"&#xff08;系统保留区&#xff09;&#xff0c;…...

Claude Code 用户如何无缝迁移至 Taotoken 解决封号与额度焦虑

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Claude Code 用户如何无缝迁移至 Taotoken 解决封号与额度焦虑 对于依赖 Claude Code 进行开发的用户而言&#xff0c;直接使用官方…...

DPlayer弹幕播放器:3分钟打造你的专属视频站

DPlayer弹幕播放器&#xff1a;3分钟打造你的专属视频站 【免费下载链接】DPlayer :lollipop: Wow, such a lovely HTML5 danmaku video player 项目地址: https://gitcode.com/gh_mirrors/dp/DPlayer 你是否曾想过为自己的博客或网站添加一个既美观又功能强大的视频播放…...

Hyper-V设备直通:3步完成高性能虚拟化的图形化方案

Hyper-V设备直通&#xff1a;3步完成高性能虚拟化的图形化方案 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 你是否曾因虚拟机性能瓶…...

抖音下载神器:douyin-downloader 从零到精通的完整指南

抖音下载神器&#xff1a;douyin-downloader 从零到精通的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...

如何彻底告别网盘下载限速:八大主流平台直链解析工具完全指南

如何彻底告别网盘下载限速&#xff1a;八大主流平台直链解析工具完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

纯Bash脚本构建轻量级AI助手:架构解析与实战部署

1. 项目概述&#xff1a;用纯Bash脚本构建你的个人AI助手 如果你和我一样&#xff0c;是个喜欢在终端里折腾的开发者&#xff0c;同时又对当前各种AI助手的复杂部署和资源消耗感到头疼&#xff0c;那么今天聊的这个项目绝对会让你眼前一亮。BashoBot&#xff0c;一个完全用Bas…...

构建全球AI治理框架:跨国法律协调与监管机构设计

1. 项目概述&#xff1a;为什么我们需要一个全球性的AI治理框架&#xff1f;最近几年&#xff0c;AI技术的爆炸式发展&#xff0c;尤其是大语言模型和生成式AI的快速迭代&#xff0c;让我这个在科技与政策交叉领域摸爬滚打了十几年的人&#xff0c;感受到了一种前所未有的紧迫感…...