C++ 中的复制并交换惯用语


分配包含 2 个步骤,破坏对象的旧状态并为其构建新状态。析构函数用于第一步,而拷贝构造函数执行第二步。

实现这两个步骤非常简单。但是在重载赋值运算符的时候,实现起来很困难。复制并交换惯用语是其解决方案。

此惯用语使用拷贝构造函数构建数据的一个本地副本。然后使用交换函数将旧数据与新数据进行交换。然后使用析构函数破坏临时副本。最后我们只剩下新数据的副本。

因此,复制并交换惯用语需要三件事

  • 拷贝构造函数
  • 拷贝构造函数
  • 析构函数
  • 交换函数。

交换函数是一个非抛出函数,交换该类(成员)的两个对象。

注意:你不应使用 std::swap 函数,因为它在内部使用拷贝构造函数和赋值运算符来实现相同的功能。

更新时间: 2019-07-30

232 次浏览

开启你的 职业

完成课程获得认证

开始
广告