基本知識不贅述,這裏格外說幾點:
運算符重載,不只爲了返回值,還能改變原對象:
int main()
{
Distance D1(11, 10), D2(-5, 11);
-D1; // 取相反數
D1.displayDistance(); // 距離 D1
-D2; // 取相反數
D2.displayDistance(); // 距離 D2
return 0;
}
二元運算符重載是的順序問題:
例如有 2 個操作數 a 和 b,二元運算符 >(表示一個二元運算符),a > b 的操作會被解釋爲下面2種形式之一 :
//a > b
a.operator>(b); //類的非靜態成員函數
operator>(a, b); //友元函數 或 普通函數
輸入/輸出運算符重載時一般都用友元函數,就是爲了順序問題.
賦值運算符那裏也要注意一下.
++ 和 -- 運算符重載:
有個先增,後增的區別:
// 重載前綴遞增運算符( ++ )
Object operator++ ()
{}
// 重載後綴遞增運算符( ++ )
Object operator++( int )
{}
函數調用運算符 () 重載:
重載該運算符,可以拿對象名稱當函數名,挺新鮮的
下標運算符 [] 重載:
很方便,記得用.
待更:
類成員訪問運算符 -> 重載 , 隱式轉換函數(=重載)