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