C ++ Assignment Operator教程中是否有拼写错误?

时间:2012-04-01 16:19:07

标签: c++

This是一个很好的教程,说明了设计C ++赋值运算符的正确方法。

最后,作者为运营商提供了以下替代实施方案:

1   Foo& operator=(Foo rhs)
2   {
3       swap(rhs);
4       return *this;
5   }

根据swap,行3应为swap(*this, rhs)swap(rhs, *this)

问题>我的理解是否正确?

谢谢

1 个答案:

答案 0 :(得分:4)

您引用的代码段由以下解释引入:

  

因为移动指针不会抛出异常,所以我们可以编写一个swap()方法来交换具有无抛出保证的两个Foo对象的内容。然后,我们可以编写整个复制构造函数,如下所示:

因此代码片段中的swap是名为swap的成员函数,而不是本教程前面使用的名为std::swap的独立函数。