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

C++中的Rule of Five

一、什么是 Rule of Three?

早期 C++ 发现一个规律:

如果类需要:

  • 析构函数
  • 复制构造
  • 复制赋值

那你必须同时实现这三个。

否则就会出 bug。

所以叫:

Rule of Three


二、C++11 之后变成 Rule of Five

因为新增:

  • 移动构造
  • 移动赋值

完整规则:

如果你自己管理资源,你应该实现:

  1. 析构函数
  2. 复制构造
  3. 复制赋值
  4. 移动构造
  5. 移动赋值

这叫:

Rule of Five


三、为什么 C# 程序员会被 C++ 震撼?

因为 C# 中:

  • GC 管理内存
  • 没有复制构造
  • 没有移动语义
  • 对象默认是引用

而 C++ 默认:

对象是值语义

A a = b;

是拷贝,不是引用。

这就是 C++ 和 C# 的哲学差异。


四、现代 C++ 更推荐的做法

手写 new/delete 已经过时。

应该使用:

  • std::unique_ptr
  • std::shared_ptr
  • std::vector
  • std::string

这些已经帮你实现了 Rule of Five。


五、给你一个总结级认知

C++ 对象有三种语义

  1. 值语义(默认)
  2. 引用语义
  3. 所有权语义(现代 C++ 核心)

移动语义解决的是:

如何高效转移所有权


六、用一句话帮你理解

复制构造:

复制资源

移动构造:

转移资源

析构函数:

释放资源

Rule of Five:

只要你管理资源,就必须管理好生命周期


七、给你一个思维升级问题

如果一个类里面:

std::vector<int> data;

你还需要写复制构造函数吗?

答案是:

❌ 不需要

因为 vector 已经实现了 Rule of Five。


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

相关文章:

  • 新手必看!高性价比ELISA试剂盒品牌推荐,省钱又好用 - 包罗万闻
  • 2026黑河工控产品厂商口碑揭秘:哪些品牌值得信赖?中低压电气/施耐德电气/工控产品,工控产品生产厂家哪家好 - 品牌推荐师
  • 理解 SQL JOIN: ON 与 WHERE 的区别
  • feel导入
  • 项目管理工具哪个好?2026年项目管理软件推荐与排名,解决数据孤岛与成本痛点 - 十大品牌推荐
  • 吐血推荐! AI论文软件 千笔·专业学术智能体 VS 云笔AI,MBA写作神器!
  • 「致命漏洞」什么是反序列化漏洞?一篇文章彻底搞懂原理、危害与防御
  • 最简解决idea系列的中文编码问题
  • 反序列化漏洞详解:原理、攻击链与防御,一篇文章彻底搞懂!
  • MySQL性能优化核心:InnoDB Buffer Pool 详解
  • 如何撰写一篇高质量的文献综述
  • 哪款项目管理系统更智能?2026年项目管理系统推荐与评测,解决扩展性痛点 - 十大品牌推荐
  • 照着用就行:专科生专属AI论文网站 —— 千笔·专业论文写作工具
  • 计算机毕设java有家披萨店管理系统的设计与实现 基于Java的意式餐饮门店运营平台开发 披萨连锁企业数字化订餐与后厨调度系统的设计
  • Nlog封装类
  • 深入浅出反序列化漏洞:从PHP到Java,一文掌握核心防御技巧
  • 计算机毕设java在线视频网站设计与实现 基于Java的流媒体点播平台开发与实现 SpringBoot架构下的网络视频服务系统构建
  • 告别盗版!2026年网络安全从业者必备开源工具全家桶
  • 反序列化漏洞:从“拆包”到“夺命”——攻击链构建与全面防护指南
  • 重磅深度:OpenAI Codex负责人揭秘,为什么我们熟知的“编程”已经结束?
  • 汽车制造工艺开发如何实现智能化与绿色化转型?
  • 【系统分析师】10.0 系统规划与分析
  • 2026变压器回收公司权威榜单 TOP5:技术实力与回收规模综合解析 - 深度智识库
  • 2026|写论文被坑到怀疑人生,唯一救星竟然是它
  • 2026年冷却塔厂家怎么选,解读知名的冷却塔厂家特色 - 工业推荐榜
  • 2005-2025年我国逐日地表温度栅格数据
  • 什么是反序列化漏洞?一篇文章讲清楚
  • 2026年开公司,老板要了解的财税知识
  • 基于javaweb的线上鲜花商城管理系统的设计与实现(11893)
  • python爬虫整理 原来我曾经拥有过这么多爬虫啊~