C++ 中的复制并交换惯用语
分配包含 2 个步骤,破坏对象的旧状态并为其构建新状态。析构函数用于第一步,而拷贝构造函数执行第二步。
实现这两个步骤非常简单。但是在重载赋值运算符的时候,实现起来很困难。复制并交换惯用语是其解决方案。
此惯用语使用拷贝构造函数构建数据的一个本地副本。然后使用交换函数将旧数据与新数据进行交换。然后使用析构函数破坏临时副本。最后我们只剩下新数据的副本。
因此,复制并交换惯用语需要三件事
- 拷贝构造函数
- 拷贝构造函数
- 析构函数
- 交换函数。
交换函数是一个非抛出函数,交换该类(成员)的两个对象。
注意:你不应使用 std::swap 函数,因为它在内部使用拷贝构造函数和赋值运算符来实现相同的功能。
广告