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