在 C++(特别是 C++11 及以后)中,复制语义(Copy Semantics)和移动语义(Move Semantics)是管理对象资源(如内存、文件句柄、网络连接)生命周期的两种核心机制。 简单来说,复制是“克隆”,移动是“转让”。 以下是两者的详细区别、原理及应用场景: --- 1. 核心概念与生活类比 复制语义 (Copy Semantics) 定义:创建一个与源对象完全相同的新对象。源对象和新对象是独立的,修改其中一个不会影响另一个。 生活类比:复印文件。你有一份文件,我去复印机复印了一份。现在我们手里各有一份。我在我的复印件上写字,你的原件不会变。 计算机操作:通常涉及深拷贝(Deep Copy),即重新分配内存并将数据从源地址复制到新地址。 移动语义 (Move Semantics) 定义:将资源的所有权从一个对象转移到另一个对象。源对象不再拥有该资源,通常会被置为空或无效状态。 生活类比:转交文件(或剪切粘贴)。你把手里的原件直接递给我。现在文件在我手里,你手里是空的。我们没有浪费纸张去复印,文件本身也没有发生物理位置的变化(还在那个文件夹里),只是归属人变了。...