跳转到内容

C++ 语言/间接/右值引用/移动语义

来自维基教科书,自由的教科书

传统上,一个类可以提供“复制构造函数”CRType::CRType(const CRType& x) {...}和“复制赋值运算符”CRType& CRType::operator=(const CRType& x) {...}。这些将在多种情况下使用,例如通过CRType oDesti(oSource);定义oDesti(其中oSource已经定义为CRType对象)。如果CRType是某种自定义容器,那么这两个函数通常通过深度复制所有包含的项目来实现,这在计算上可能是昂贵的。

在现代软件中,这些由编程“移动构造函数”和“移动赋值运算符”函数补充,这些函数通过仅传递有效负载句柄来实现。函数重载可以区分移动构造函数和复制构造函数,因为移动构造函数参数的类型是“右值引用”CRType&&

有关移动语义的更多信息(包括交互式示例)

华夏公益教科书