運算符重載:(重載——函數同名,參數不同,行為相似)
運算符重載——特殊的一種重載 (加 operator)
友元運算符重載 與函數對比,功能相同
friend const int* getaddr(const Demo &);
friend Demo& addeq(Demo &, const Demo &);
函數實現功能不直觀不容易被理解
friend const int* operator& (const Demo &);
friend Demo& operator += (Demo &, const Demo &);
運算符重載實現功能直觀便于理解
friend Demo& operator ++ (Demo &); 前++
friend Demo& operator ++ (Demo &,int);后++
成員函數運算符重載 成員函數在類中 屬于類 可以使用this 指針所以成員函數的運算符重載在傳參數時 參數個數和友元運算符重載不同。
bool operator !=(Integer &)
bool是判斷返回值(對或者錯)
【】通過數組名[]訪問數組成員,即得到一個對象
通過數組名[]訪問數組成員,即得到一個對象,
對象有一個運算符[]得到對象管理的整型數組的一個整型
arr[0]:IntArray對象
arr[0][0]:是一個整型
注意事項 除關系運算符“.”、作用域運算符“::”、sizeof運算符和三目運算符“:?”外,C++中的所有運算符都可以重載(其中“=”和“&”不必用戶重載)
重載運算符限制限制在C++語言中已經有的運算范圍內的允許重載的運算符之中,不能創建新的運算符。
運算符重載的實質就是函數重載,遵循函數重載的選擇原則
重載之后的運算符不能改變運算符的優先級和結合性,也不能改變運算符操作數的個數及語法結構
運算符重載不能改變該運算符用于內部類型的對象的含義
運算符重載是針對新類型數據的實際需要對原有運算符進行的適當的改造,重載的功能應當與原有功能相類似,避免沒有目的地使用重載運算符
重載運算符的函數不能有默認參數,否則就改變了運算符的參數個數
重載的運算符只能是用戶自定義類型,否則就不是重載而是改變了現有的C++標準數據類型的運算符的規則
運算符重載可以通過成員函數的形式,也可以通過友元函數的形式,和非成員的普通函數