C++ 中的拷贝和交换惯用技巧是什么?
赋值包含 2 个步骤,分解对象的旧状态并为其构建一个新状态。析构函数用于执行第一步,而一个拷贝构造函数执行第二步。实现这两个步骤非常简单。但在重载赋值运算符时,这会变得非常困难。拷贝和交换惯用技巧就是针对这一问题提出的解决方案。
此惯用技巧使用拷贝构造函数构建数据的本地副本。然后使用 swap 函数用新数据交换旧数据。然后使用析构函数对临时副本进行析构。最后我们只剩下了新数据的副本。
因此,拷贝和交换惯用技巧需要三样东西 — 一个拷贝构造函数、一个析构函数和一个 swap 函数。swap 函数是一个非抛出函数,用于交换类的两个对象,即成员。注意 — 不得使用 std::swap 函数,因为其在内部使用拷贝构造函数和赋值运算符来实现同一目标。
广告