This是一个很好的教程,说明了设计C ++赋值运算符的正确方法。
最后,作者为运营商提供了以下替代实施方案:
1 Foo& operator=(Foo rhs)
2 {
3 swap(rhs);
4 return *this;
5 }
根据swap,行3
应为swap(*this, rhs)
或swap(rhs, *this)
。
问题>我的理解是否正确?
谢谢
答案 0 :(得分:4)
您引用的代码段由以下解释引入:
因为移动指针不会抛出异常,所以我们可以编写一个
swap()
方法来交换具有无抛出保证的两个Foo
对象的内容。然后,我们可以编写整个复制构造函数,如下所示:
因此代码片段中的swap
是名为swap
的成员函数,而不是本教程前面使用的名为std::swap
的独立函数。