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

拷贝构造与赋值:浅拷贝vs深拷贝,面试里最容易踩的坑

上篇聊了构造函数和析构函数,今天接着讲它的"兄弟"——拷贝构造和赋值。

这个话题在面试里出现频率很高。而且很多人不是不知道概念,而是在具体场景下判断不出该用浅拷贝还是深拷贝。

讲个我自己的教训。刚工作不久,写了个传感器数据管理的类。内部用了一个指针数组存数据。我嫌麻烦,没写拷贝构造函数,觉得编译器自动生成的够用了。

结果程序跑着跑着就崩了。

排查了半天,发现是vector扩容的时候,拷贝了对象,但编译器生成的拷贝构造函数只做了浅拷贝——指针复制了一份,两个对象指向同一块内存。一个对象析构的时候把内存释放了,另一个对象还在用这块内存,直接野指针。

从那以后,我对拷贝构造和赋值再也不敢偷懒。

拷贝构造函数:什么时候调用

拷贝构造函数在三种情况下被调用:

第一,用一个对象初始化另一个对象。

Sensor s1; Sensor s2 = s1; // 调用拷贝构造 Sensor s3(s1); // 调用拷贝构造

第二,函数参数是值传递的对象。

void processSensor(Sensor s) { // 值传递,调用拷贝构造 // 处理s } Sensor s1; processSensor(s1); // s1被拷贝一份传给s

第三,函数返回一个局部对象(有些编译器会做返回值优化,省略拷贝)

Sensor createSensor() { Sensor s; return s; // 可能调用拷贝构造(也可能被RVO优化掉
http://www.jsqmd.com/news/1189067/

相关文章:

  • 深度复盘:环氧地坪漆公司哪家好?奥伯特给出硬核答案 - 变量人生001
  • C++组合模式实战:统一处理树形对象结构的设计艺术
  • 3步锁定专业成都厨卫翻新装修公司 从筛选到签约 - 信息热点
  • 宝珀中国官方售后服务中心|官方地址及联系电话权威信息通知(2026年7月更新) - 宝珀官方售后服务中心
  • 【深度测评】济南爱马仕香奈儿包包回收行情 2026 最新估价标准 - 讯息早知道
  • Debian12网卡配置:桥接与Host-Only模式详解
  • Redisson实战:Redis客户端选择与分布式锁优化
  • 华为OD机试真题 新系统 2026-07-08 C++ 实现【计算碳排放减少量】
  • machine 孔与轴的极限偏差数值(GB/T1800.4-1999)
  • 如何为《恋活!》游戏安装HF Patch:5分钟解锁完整游戏体验的终极指南
  • 软件设计师冲刺:核心考点速记与实战联想
  • OpenCV斑点检测原理与工业视觉应用实践
  • 2026 乳胶床垫全维度实测:10 大品牌横向对比,制造型高性价比品牌差异化解析 - 信息热点
  • 内容7 内存管理 1​​
  • 苏州手表回收攻略|全城正规门店渠道,估价实操技巧,避坑兜底一站式变现 - 生活时报
  • STM32F215RE与ADS131M02高精度数据采集方案详解
  • 2026年7月最新深圳万国官方售后服务热线与网点地址查询 - 万国中国官方服务中心
  • 2026 广告媒介采购行业发展观察:标准化直采平台规范企业营销投放链路
  • 虚竹哥与北京大学出版社免费送AI书活动第七期:《具身智能机器人开发全解》
  • 基于ADC12DJ5200SE的宽带射频采样接收机设计实战指南
  • LangChain 多任务应用实战案例
  • Windows C盘清理教程:安全释放数十GB空间的系统优化指南
  • YJD-06A/B 星型卸料器 300*300 方口国标法兰——河北九阳除尘自产耐磨防卡卸料器技术解析与企业能力白皮书 - 品牌优选官
  • YOLOv11架构改进:MFM与LEGM模块详解
  • PD分离+弹性伸缩/角色切换的实践笔记
  • Lua字节码逆向工程实战:用unluac恢复丢失源码的完整指南
  • ADP5350与STM32F042C6的嵌入式电源管理方案
  • 从零构建带AI流式对话的Vue2全栈应用
  • 2026国产液位计产业深度解析:磁翻板液位计/ 雷达液位计/超声波液位计/差压流量计头部厂家技术实力与工况选型全指南
  • 2026广州高端翡翠回收实力排行,禹竞名奢汇专收冰种收藏翡翠 - 禹竞奢收行