深入理解C++中string的深浅拷贝

目录

一、引言

二、浅拷贝与深拷贝的基本概念

2.1 浅拷贝

2.2 深拷贝

在C++ 中, string 类的深浅拷贝有着重要的区别。

浅拷贝

深拷贝

 string 类中的其他构造函数及操作

resize 构造

 = 构造(赋值构造)

 + 构造(拼接构造)

 cin 和 cin.get 的区别

三、C++中string类的默认行为

四、自定义字符串类并实现深浅拷贝

4.1 未重载拷贝构造函数和赋值运算符(默认浅拷贝)

4.2 实现深拷贝(重载拷贝构造函数和赋值运算符)

五、比较运算符的重载(> < >= <= == !=)

六、resize函数的实现

七、赋值运算符的深入探讨

7.1 自赋值情况的处理

7.2 移动赋值运算符(C++11及以后)

八、 +  运算符的重载


一、引言

在C++编程中, string  是一个常用的类,用于处理字符串。在涉及对象的复制、传递等操作时,深拷贝和浅拷贝的概念至关重要。理解  string  的深浅拷贝机制,能够帮助我们编写出更健壮、高效且无内存错误的代码。本文将深入探讨  string  的深浅拷贝原理,并结合具体代码示例进行详细分析。

二、浅拷贝与深拷贝的基本概念

2.1 浅拷贝

浅拷贝是指在对象复制时,只复制对象中成员变量的值。如果成员变量是指针类型,浅拷贝仅仅复制指针的值(即地址),这就导致源对象和拷贝对象的指针指向同一块内存区域。当其中一个对象释放该内存时,另一个对象的指针就会变成悬空指针,进而引发程序崩溃或未定义行为。

2.2 深拷贝

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

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

相关文章

在Qt中验证LDAP账户(Windows平台)

一、前言 原本以为在Qt&#xff08;Windows平台&#xff09;中验证 LDAP 账户很简单&#xff1a;集成Open LDAP的开发库即可。结果临了才发现&#xff0c;Open LDAP压根儿不支持Windows平台。沿着重用的原则&#xff0c;考虑迁移Open LDAP的源代码&#xff0c;却发现工作量不小…

《软件设计师》复习笔记(11.4)——处理流程设计、系统设计、人机界面设计

目录 一、业务流程建模 二、流程设计工具 三、业务流程重组&#xff08;BPR&#xff09; 四、业务流程管理&#xff08;BPM&#xff09; 真题示例&#xff1a; 五、系统设计 1. 主要目的 2. 设计方法 3. 主要内容 4. 设计原则 真题示例&#xff1a; 六、人机界面设…

UniRig ,清华联合 VAST 开源的通用自动骨骼绑定框架

UniRig是清华大学计算机系与VAST联合开发的前沿自动骨骼绑定框架&#xff0c;专为处理复杂且多样化的3D模型而设计。基于强大的自回归模型和骨骼点交叉注意力机制&#xff0c;UniRig能够生成高质量的骨骼结构和精确的蒙皮权重&#xff0c;大幅提升动画制作的效率和质量。 UniR…

LeetCode 443 压缩字符串

字符数组压缩算法详解&#xff1a;实现与分析 一、引言 在处理字符数组时&#xff0c;我们常常遇到需要对连续重复字符进行压缩的场景。这不仅可以节省存储空间&#xff0c;还能提升数据传输效率。本文将深入解析一个经典的字符数组压缩算法&#xff0c;通过详细的实现步骤和…

alertManager部署安装、告警规则配置详解及告警消息推送

​ java接受告警请求RestController RequestMapping("/alert") Slf4j public class TestApi {private static final DateTimeFormatter FORMATTER DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");RequestMappingpublic void sendTemplate(HttpServl…

数据库勒索病毒威胁升级:企业数据安全防线如何用安当RDM组件重构

摘要&#xff1a;2025年Q1全球数据库勒索攻击量同比激增101.8%&#xff0c;Cl0p、Akira等团伙通过边缘设备漏洞渗透企业核心系统&#xff0c;制造业、金融业等关键领域面临数据加密与业务停摆双重危机。本文深度解析勒索病毒对数据库的五大毁灭性影响&#xff0c;结合安当RDM防…

thanos sidecar和receive区别?

Thanos Sidecar 和 Thanos Receive 是 Thanos 生态系统中两个关键组件&#xff0c;但它们在架构中的作用和功能上有明显的区别。以下是它们的主要区别&#xff1a; 1. Thanos Sidecar 功能&#xff1a; 与 Prometheus 集成&#xff1a; Sidecar 是一个部署在每个 Prometheus…

Unity入门笔记(缘更)

内容来源SiKi学院的Luna’s Fantasy 文章目录 一、基础知识1.准备2.基础知识1.层级(Layer)2.轴心点3.预制体(Prefab)4.刚体组件(Rigidbody)5.碰撞器组件(BoxCollider) 二、代码1.移动 一、基础知识 1.准备 Unity安装&#xff1a; https://unity.cn 2.基础知识 1.层级(Layer…

使用VHD虚拟磁盘安装双系统,避免磁盘分区

前言 很多时候&#xff0c;我们对现在的操作系统不满意,就想要自己安装一个双系统 但是安装双系统又涉及到硬盘分区,非常复杂,容易造成数据问题 虚拟机的话有经常用的不爽,这里其实有一个介于虚拟机和双系统之间的解决方法,就是使用虚拟硬盘文件安装系统. 相当于系统在机上…

ARINC818协议(五)

1.R_CTL,设置固定的0x44即可 2.Dest_ID:目的地D_ID,如果不需要目的地址&#xff0c;就设置为0&#xff1b;ADVB协议支持 多个视频目的地址&#xff0c;广播通信; 3.cs_ctl在FC-AV上不用 4.source_ID:S_ID [23:0]包含源实体的端口的地址标识&#xff1b;不用就设置为0. ADVB允许…

鸿蒙开发对于RelativeContainer高度设置‘auto‘后还是没有自适应问题的解决方案

RelativeContainer设置高度为自适应‘auto’没用生效&#xff0c;查看了官方文档(文档中心)也没用给出明确的答案。只说了不能把锚点设置成父组件锚点&#xff08;__container__&#xff09;。也尝试了使用guidline来替换父组件锚点&#xff0c;还是没能自适应高度。 后来尝试让…

k8s教程3:Kubernetes应用的部署和管理

学习目标 理解Kubernetes中应用部署的基本概念和方法掌握Deployment、ReplicaSet、StatefulSet、DaemonSet、Job与CronJob等控制器的使用了解Helm作为Kubernetes的包管理工具的基本使用通过实际示例学习应用的部署、更新与管理 Kubernetes提供了一套强大而灵活的机制&#xff…

通过特定协议拉起 electron 应用

在 Android 通过 sheme 协议可以拉起其他应用。 electron 应用也可以通过类似特定协议被拉起。 在同时有 web、客户端的应用里&#xff0c;可以通过这种方式在 web 拉起客户端。 支持拉起客户端 const PROTOCOL xxxif (process.defaultApp) {// 这里是开发环境&#xff0c;有…

算法备案的审核标准是什么?

随着《互联网信息服务算法推荐管理规定》等法规的出台&#xff0c;算法备案成为了强制性备案&#xff0c;是产品合规上线的必要条件之一。本篇内容将从企业视角出发&#xff0c;分析算法备案的常见问题&#xff0c;意在对有备案需求的小伙伴们有所帮助。 一、谁需要做算法备案…

回顾与动机 - 为什么我们需要 Transformer

在接下来的旅程中,我们将一起探索深度学习领域最重要、最具影响力的模型架构之一——Transformer。从它的基本原理出发,逐步深入,最终能够亲手实现一个文本生成模型。 本系列教程假设你已经具备一定的深度学习基础,了解神经网络、损失函数、优化器等基本概念,并且熟悉 Py…

探索 Higress:下一代云原生 API 网关

引言 在云原生时代&#xff0c;API 网关作为连接客户端与后端服务的桥梁&#xff0c;扮演着至关重要的角色。Higress 是一款由阿里巴巴开发的先进云原生 API 网关&#xff0c;基于开源的 Istio 和 Envoy 构建。它通过将流量网关、微服务网关和安全网关三者高度集成&#xff0c…

Spring Boot 整合 DeepSeek 实现AI对话 (保姆及教程)

文章目录 文章目录 前言 一、创建 spring boot 工程 二、申请key 三、修改配置文件 application.properties 四、编写控制器&#xff08;controller&#xff09; 五、运行调试 前言 提示&#xff1a;随着人工智能的不断发展&#xff0c;ai这门技术也越来越重要&#xff0c;很多…

前端资源加载失败后重试加载(CSS,JS等引用资源)

前端资源加载失败后的重试 .前端引用资源时出现了资源加载失败(这里针对的是路径引用异常或者url解析错误时) 解决这个问题首先要明确一下几个步骤 1.什么情况或者什么时候重试 2.如何重试 3.重试过程中的边界处理 这里引入里三个测试脚本&#xff0c;分别加载里三个不同的脚…

无刷电机槽数相同、转子极数不同的核心区别

一、基础原理差异 无刷电机的核心参数: 槽数(定子槽数,记为 ( Z )):定子铁芯上的绕组槽数量,决定绕组布局。极数(转子磁极数,记为 ( 2p )):转子上的永磁体磁极对数(总极数为 ( 2p ),如 ( p=4 ) 表示 8 极)。核心关系:槽极配合(( Z/2p ))决定电机电磁结构,相同…

6.Rust+Axum:打造高效 WebSocket 实时通信聊天室

摘要 本文详细介绍 RustAxum 在 WebSocket 实时通信开发中的应用&#xff0c;包括双向通信、状态管理等&#xff0c;实践构建聊天室应用。 一、引言 在当今的 Web 应用开发中&#xff0c;实时通信变得越来越重要。WebSocket 作为一种在单个 TCP 连接上进行全双工通信的协议&…