移动语义(Move Semantics)和完美转发(Perfect Forwarding)是 C++11 引入的两个极其重要的特性。它们彻底改变了 C++ 的性能和泛型编程的编写方式。 要理解它们,我们需要先了解几个核心概念,然后逐步深入。 --- 第一部分:移动语义 (Move Semantics) 在 C++11 之前,当我们把一个对象赋值给另一个对象,或者作为参数传递时,通常会发生深拷贝(Deep Copy)。如果对象包含大量的动态内存(比如很大的 或 ),这种拷贝是非常消耗性能的。 移动语义的核心思想是: 如果一个对象马上就要被销毁了(比如临时变量),我们不需要“拷贝”它的资源,而是直接把它的资源“偷”过来(转移所有权),从而避免昂贵的内存分配和数据复制。 1. 左值 (Lvalue) 与 右值 (Rvalue) 左值:有名字、能取地址、非临时的对象。比如 中的 。 右值:没有名字、不能取地址、临时的对象。比如字面量 ,或者函数返回的临时对象 。 2. 右值引用 (Rvalue Reference: ) C++11 引入了右值引用 ,它只能绑定到右值上。它的出现让我们能够...