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

C++中的析构函数、复制构造函数(Copy Constructor)

一、析构函数到底是谁调用?

~类名() {// 释放资源
}

⚠ 不是“程序主动调用”。

更准确说法是:

对象生命周期结束时,编译器自动调用。

触发时机:

  • 作用域结束
  • delete
  • 容器销毁
  • 临时对象结束

例如:

void func() {A a;
}  // 离开作用域,自动调用 ~A()

这就是 C++ 的核心思想:

RAII(Resource Acquisition Is Initialization)

资源跟对象生命周期绑定。

这点和 C# 的 GC 完全不同。


二、复制构造函数 = 深拷贝吗?

答案是:

❌ 不一定
✅ 取决于你怎么写


默认复制构造函数是“成员逐个拷贝”

例如:

class A {
public:int x;
};

默认复制构造:

A a1;
A a2 = a1;

就是:

a2.x = a1.x

这是“值拷贝”。


问题来了:如果成员是指针呢?

class A {
public:int* ptr;A(int value) {ptr = new int(value);}~A() {delete ptr;}
};

如果你不写复制构造函数:

A a1(10);
A a2 = a1;

会发生:

a1.ptr ----\> 指向同一块内存
a2.ptr ----/

这叫:

浅拷贝(Shallow Copy)

结果:

  • 两个对象指向同一块内存
  • 两次析构
  • double free
  • 程序崩溃

深拷贝应该这样写

A(const A& other) {ptr = new int(*other.ptr);
}

这才是:

深拷贝(Deep Copy)

每个对象拥有自己的资源。


http://www.jsqmd.com/news/411200/

相关文章:

  • 技术在现代商业运营中的作用
  • 2026军用智能识别追踪无人机蜂群系统供应商推荐,猎翼无人机差异化的“轻量突围” - 品牌2025
  • 威布尔分布:从双参数到三参数,及其与指数分布、瑞利分布的关联
  • 藤条香精供应商芬畅凝科性价比如何,在海外市场呢 - 工业品牌热点
  • 四旋翼无人机simulink轨迹跟踪 mpc文档解释说明 MPC四旋翼无人机轨迹跟踪
  • 四川找靠谱碳晶板厂家?这几个核心要点,新都海云为你拆解 - 朴素的承诺
  • 2026年2月四川户外家具定制厂家TOP5深度解析与推荐! - 朴素的承诺
  • springboot低空空域飞行管控中心平台 飞行器数据管理系统
  • Go 语言系统编程与云原生开发实战(第21篇)
  • antv3 x6 基本语法(二)
  • 计算机毕业设计之jsp民宿信息管理系统
  • 山东众泰防爆电机股份有限公司 联系方式: 业务咨询与使用前注意事项 - 十大品牌推荐
  • springboot工程项目任务分配管理系统
  • IRPAPERS:一个专门测试科学文献检索的新基准,揭示了图像与文本表示各自的优势和盲区
  • 远程调试桥接-网络-ADB-GDB
  • 哪款project管理软件更适合您?2026年工具推荐与排名,解决集成与安全痛点 - 十大品牌推荐
  • 计算机毕业设计之基于SpringBoot的高校疫情防控管理系统
  • 计算机毕设java校园物品交易系统 高校闲置物品流转系统的设计与实现 校园循环经济服务平台构建研究
  • DoS(拒绝服务攻击)和 DDoS(分布式拒绝服务攻击)
  • 2026正规成都中央空调维保厂家推荐榜单 - 朴素的承诺
  • 2026年2月成都充电桩厂家权威榜单发布 - 朴素的承诺
  • PMP证书对求职和涨薪的实际帮助有多大?
  • 应届生求职焦虑?高职大数据专业这条“数据分析+“路,起薪突破7000+
  • 01 安装:ElasticSearch和Kibana安装
  • 山东众泰防爆电机股份有限公司 联系方式: 了解企业信息与沟通方式参考 - 十大品牌推荐
  • 选择HR系统就像找合伙人:多款主流厂商的全解析 - 博客湾
  • 黑客技术是什么?从 “误解” 到 “自学”:小白入门全指南
  • 类似Jira的软件哪个好?2026年类似Jira的软件推荐与排名,解决定制化与成本痛点 - 十大品牌推荐
  • 敏捷转型如何选工具?2026年project管理软件推荐与评测,涵盖迭代与可视化痛点 - 十大品牌推荐
  • 借助 OpManager 实现高效网络管理全面指南