发布时间:2026/8/5 8:17:05
小学生学C++编程语法知识(C++中的深拷贝与浅拷贝) C中的深拷贝与浅拷贝——给同学们讲一下“复制魔法”同学们今天我们学习一个非常重要的C知识当我们复制一个对象时到底是复制“外表”还是复制“里面的东西”这就是浅拷贝Shallow Copy深拷贝Deep Copy它们主要和指针动态内存new类对象复制有关。一、先理解什么叫“拷贝”生活中小明有一本《C魔法书》。小红说“我也想要一本一样的。”于是小明复制了一本。这就是复制 拷贝C里面Student a; Student b a;意思把对象a复制给对象b。例如int a 10; int b a;结果a: 10 b: 10两个数字互不影响。如果b 20;那么a: 10 b: 20没有问题。因为int里面保存的是数据本身。二、问题出现指针看一个例子int a 100; int *p a;内存a ┌─────┐ │100 │ └─────┘ ↑ | p指针p保存的是地址不是100。现在int *q p;发生什么100 ┌─────┐ │ │ └─────┘ ↑ ↑ | | p qp和q指向同一个地方。这就是浅拷贝三、什么是浅拷贝一句话只复制地址不复制真正的数据。比如class Student { public: int age; int *score; };创建Student s1; s1.age 10; s1.score new int(100);内存s1 age ┌────┐ │10 │ └────┘ score | ↓ ┌─────┐ │100 │ └─────┘现在Student s2 s1;默认拷贝C会这样s2.age s1.age s2.score s1.score结果s1.score | ↓ ┌─────┐ │100 │ └─────┘ ↑ | s2.score两个指针指向同一个100。四、浅拷贝有什么问题看代码#includeiostream using namespace std; class Student { public: int *score; Student() { score new int(100); } ~Student() { delete score; } }; int main() { Student a; Student b a; }发生什么创建aa.score | ↓ 100复制ba.score | ↓ 100 ↑ | b.score程序结束先销毁bdelete score;100被释放。然后销毁a再次delete score;可是这个内存已经没有了这叫重复释放可能导致程序崩溃内存错误五、什么是深拷贝深拷贝一句话不仅复制地址而是重新复制一份数据。还是刚才例子a:a.score | ↓ 100复制Student ba;深拷贝以后a.score | ↓ ┌─────┐ │100 │ └─────┘ b.score | ↓ ┌─────┐ │100 │ └─────┘注意两个100是两块不同的内存。六、如何实现深拷贝需要自己写拷贝构造函数格式类名(const 类名 对象) { }例如#includeiostream using namespace std; class Student { public: int *score; Student() { score new int(100); } //拷贝构造函数 Student(const Student s) { score new int(*s.score); } ~Student() { delete score; } }; int main() { Student a; Student ba; }关键score new int(*s.score);拆开第一步取出原来的值*s.score得到100第二步重新申请空间new int(100)得到新的100所以两个对象互不影响。七、浅拷贝 vs 深拷贝比较浅拷贝深拷贝复制什么地址数据速度快慢是否申请新空间否是两个对象是否共享数据是否容易出错吗容易安全需要自己写吗默认提供通常自己写八、生活中的比喻浅拷贝小明有一个遥控汽车。小红复制拿了一张纸写遥控汽车的位置小明家这不是复制汽车。只是复制地址。深拷贝小红重新买了一辆一模一样的汽车。现在小明玩自己的。小红玩自己的。互不影响。九、什么时候需要深拷贝主要情况类里面有指针例如class Array { int *data; };或者动态数组int *arrnew int[100];或者字符串char *name;都需要考虑深拷贝。十、C中的“三件套”如果一个类管理动态内存通常需要1. 构造函数申请空间new2. 拷贝构造函数负责深拷贝3. 析构函数释放空间delete这三个叫Rule of Three三法则十一、给同学们的记忆口诀普通变量直接复制。 指针变量要看地址。 复制地址是浅拷贝。 复制数据是深拷贝。 new出来的东西 一定要小心释放。十二、信奥竞赛中的理解在GESP、CSP-J阶段通常intdoublecharstringvector已经帮我们处理好了。例如vectorint a; vectorint ba;这里不是简单复制地址。vector内部已经实现了深拷贝。所以b[0]100;不会影响a[0]但是学习链表二叉树动态数组智能指针时深浅拷贝就是必须掌握的核心知识。一句话总结浅拷贝复制“钥匙”地址深拷贝复制“房子”数据。指针越多越要小心浅拷贝。

相关新闻

2026/8/5 8:17:05

商标设计注册成功率从设计阶段就开始提高吗?

商标设计注册成功率能从设计阶段就开始提高吗?答案是肯定的。很多创业者直到被驳回才明白:商标注册的成功率,在设计阶段就已注定。 那些绕开雷区的品牌不是运气好,而是把功课做在了前面。本文拆解4个设计阶段的关键策略&#xff0…

2026/8/5 9:17:08

Shader学习25:织物 之 天鹅绒

一、关于布料表现布料表面不是光滑的,是无数根细小纤维竖立着传统的微表面brdf更适用于致密表面,但对于松散结构的布料 缺少了一些真实布料的特征,因为表面的纤维会吸收、散射入射光。边缘光照效果》Sheen 环:织物在掠射角时出现的…

2026/8/5 9:17:08

钉钉待办API迁移实战:从旧版接口升级到新版待办任务接口

1. 项目缘起:从“旧”到“新”的待办接口迁移之痛最近在重构一个内部任务协同系统,核心功能之一就是自动将系统内的任务同步到钉钉待办,方便团队成员在钉钉里统一查看和处理。这个功能原本跑得好好的,用的是钉钉开放平台提供的“创…

2026/8/5 9:17:08

机器视觉与PLC:工业自动化两大核心技术对比与职业选择指南

在工业自动化与智能制造领域,机器视觉和PLC(可编程逻辑控制器)是两大核心支柱技术,它们共同构成了现代工厂的“眼睛”和“大脑”。对于初学者或寻求职业转型的工程师而言,选择哪个方向作为主攻领域,不仅关乎…

2026/8/5 9:12:08

视频孪生企业怎么选?2026年最新3个避坑技巧

做视频孪生领域落地快5年,前前后后帮十几家客户选过供应商,踩过的坑能攒一箩筐。 这篇整理了2026年最新的3个避坑技巧,全是实打实的经验,没有营销,放心看。这些年我见过的视频孪生选型坑我当初2023年帮南方某制造园区选…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/5 0:01:34

三升四,比成绩下滑更可怕的,是孩子开始「认命」

分水岭上,最难的不是翻过去,是孩子不想翻了。八月初了。这两个字,对三升四的家长来说,比任何闹钟都让人清醒。最近的家长群里,气氛明显不一样了。一升二的在关心兴趣班,二升三的在讨论要不要提前学英语。而…

2026/8/5 0:01:34

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:01:34

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…