這是爲什麼執行:C++ - 爲什麼要op + =而不是其他方式實現op +?
T& T::operator+=(const T&) {
// ... implementation ...
return *this;
}
T operator+(const T& lhs, const T& rhs) {
T temp(lhs);
return temp += rhs;
}
傳播更多的時候比這一個:
T& T::operator+=(const T& rhs) {
*this = *this + rhs;
return *this;
}
T operator+(const T& lhs, const T& rhs) {
// ... implementation ...
return some_result;
}
沒有任何理由可言,還是僅僅是我見過的人實現它隨機的巧合這種方式多次在我閱讀的文獻中,而且從來沒有其他方式?
測試第二個,你會發現它不起作用。究竟它是如何工作的將取決於'// ...實現...'中發生了什麼,但它不會起作用。最有可能的是,'return * this + rhs;'完全不會對'this'做任何事情。 – user2357112
@ user2357112:我的回答是解釋你發現的問題,還是另一個? –
請不要通過查看答案來更改帖子。它會使答案無效 – P0W