在這裏:http://en.m.wikipedia.org/wiki/Rule_of_three_(C++_programming)爲什麼使用swap來實現複製分配?
/** Copy Assignment Operator */
Foo& operator= (const Foo& other) {
Foo temporary (other);
std::swap (data, temporary.data);
return *this;
}
在該示例中,它使用std::swap
用臨時交換的數據。我們爲什麼要創建一個臨時和交換?複製不是更快嗎?我也在其他地方看到了這一點,並感到困惑。
但是從鏈接的例子中,他們並沒有用這個交換爲了複製構造函數..爲什麼? – texasbruce
@texasbruce:構造函數是不同的。如果通過構造函數中途拋出異常,部分構造的對象將在異常傳播到調用堆棧之前自動正確銷燬。 – NPE