2012-04-01 64 views
1

This是一個很好的教程,說明了設計C++賦值運算符的正確方法。在C++ Assignment Operator教程中是否存在拼寫錯誤?

最後,作者提供以下替換實現對於操作如下:

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

基於該swap,線3應該是swap(*this, rhs)swap(rhs, *this)

問題>我的理解是否正確?

謝謝

+1

這篇文章提到「因爲移動指針不會拋出異常,所以我們可以編寫一個swap()方法來交換兩個具有no-throw保證的Foo對象的內容,然後我們可以將整個拷貝構造函數寫成跟隨..「,所以在這裏交換被認爲是一個成員函數。 – rraawwrr 2012-04-01 16:21:53

回答

4

的代碼片段,你的報價是該解釋出臺:

由於移動指針將不會拋出異常,我們可以寫一個swap()方法交換兩個內容Foo具有無投票保證的對象。然後,如下我們可以寫出整個拷貝構造函數:

所以在代碼段的swap名爲swap該成員函數,而不是命名std::swap獨立功能先前在教程中使用。