C++ 移动语义

示例

移动语义是C ++中将一个对象移动到另一个对象的一种方式。为此,我们清空旧对象并将其所有内容放入新对象中。

为此,我们必须了解什么是右值引用。一个右值引用(T&&其中T是对象类型)与普通引用(T&,现在称为左值引用)差别不大。但是它们充当两种不同的类型,因此,我们可以使构造器或函数采用一种或另一种类型,这在处理移动语义时将是必需的。

我们需要两种不同类型的原因是要指定两种不同的行为。左值引用构造函数与复制有关,而右值引用构造函数与移动有关。

要移动对象,我们将使用。此函数返回对该对象的右值引用,以便我们可以将该对象中的数据窃取到一个新对象中。有几种执行此操作的方法,下面将进行讨论。std::move(obj)

需要注意的重要一点是,使用std::movecreate只会创建一个右值引用。换句话说,该语句不会更改obj的内容,而(可能)会更改。std::move(obj)auto obj2 = std::move(obj)