短博客,記錄下++符號前後置的運算符重載的代碼格式,方便以後取用。
舉例子來說明。假設有一個複數的類:
class Complex {
private:
double real;
double image;
public:
blablabla......
}
則
Complex& Complex::operator ++() { // 前置
real += 1;
image += 1;
return *this;
}
Complex Complex::operator ++(int) { // 後置
Complex before = *this;
real += 1;
image += 1;
return before;
}
注意點:
1、前置返回的是引用,後置返回的是臨時對象。因爲後置的時候原來的對象已經被++改變了。前置用引用則是爲了不產生臨時變量,減少內存的消耗而已。
2、注意後置的函數聲明,參數列表中比前置多了一個int,這裏似乎是不符合運算符重載的定義的,++是屬於一元運算符,理應後置時沒有右邊的數作爲參數進行傳入。所以說,這裏的int其實是作爲區分前後置的標誌而已,在函數體裏面並沒有直接地用到。作爲一個規則把它記住就好。
3、類似的,- -號也應該是這樣進行重載。