移动语义是 C++11 最重要的特性,没有之一。它让"把一个对象"交给另一个对象从昂贵的深拷贝变成了廉价的指针交换,从根本上改变了我们设计 C++ API 的方式。
但即便是用了多年 C++11 的开发者,仍然有很多人说不清楚三件事:std::move 到底做了什么?完美转发为什么叫"完美"?return 语句前面要不要加 std::move?
本文从值类别(value category)的本原出发,逐步拆开移动语义的每一个层次。
2026/5/6大约 9 分钟
移动语义是 C++11 最重要的特性,没有之一。它让"把一个对象"交给另一个对象从昂贵的深拷贝变成了廉价的指针交换,从根本上改变了我们设计 C++ API 的方式。
但即便是用了多年 C++11 的开发者,仍然有很多人说不清楚三件事:std::move 到底做了什么?完美转发为什么叫"完美"?return 语句前面要不要加 std::move?
本文从值类别(value category)的本原出发,逐步拆开移动语义的每一个层次。