本章節(jié)主要講解是運(yùn)算符重載。運(yùn)算符重載是賦予運(yùn)算符能操作自定義類(lèi)型的功能。C++運(yùn)算符重載主要分為以下三類(lèi):
類(lèi)成員函數(shù)重載
友元函數(shù)重載
流運(yùn)算符重載
類(lèi)重載
重載的運(yùn)算符是帶有特殊名稱(chēng)的函數(shù),函數(shù)名是由關(guān)鍵字 operator 和其后要重載的運(yùn)算符符號(hào)構(gòu)成的。與其他函數(shù)一樣,重載運(yùn)算符有一個(gè)返回類(lèi)型和一個(gè)參數(shù)列表。如下實(shí)現(xiàn)對(duì)象與對(duì)象的加法的測(cè)試代碼:
對(duì)于上述重載: firstScore+secondScore 一般解析為 firstScore.operator +(secondScore) 的方式。operator+是函數(shù)名,對(duì)象調(diào)用成員函數(shù)的方式解析對(duì)象與對(duì)象的加法。所以類(lèi)重載函數(shù)的參數(shù)個(gè)數(shù)是比運(yùn)算符實(shí)際的操作數(shù)少1。
友元重載
友元重載,就是重載函數(shù)是友元函數(shù),如下判斷兩個(gè)美女得分誰(shuí)高的測(cè)試代碼:
上述代碼中,我們真正要比較的其實(shí)只是兩個(gè)美女的各自得分,對(duì)于Liu》Di 重載函數(shù)的解析過(guò)程為 operator》(Liu,DI);operator》是函數(shù)名,故友元重載的參數(shù)個(gè)數(shù)是等于運(yùn)算符的操作數(shù)的。
流重載
流運(yùn)算符的重載只能采用友元的方式,并且流對(duì)象當(dāng)做參數(shù)的時(shí)候必須采用引用(&)的方式,所以這里小編單獨(dú)歸結(jié)為一類(lèi)。具體實(shí)例代碼如下:
特殊重載
前置++或者-- 與后置++以及--的重載,類(lèi)重載的時(shí)候并不遵循上述情況,通常我們會(huì)帶一個(gè)int標(biāo)識(shí)參數(shù)當(dāng)做后置++或者--的重載,如下代碼:
從這一點(diǎn)上看,其實(shí)前置之所以比后置快,一目了然,躲了一個(gè)對(duì)象的創(chuàng)建過(guò)程。
重載注意項(xiàng)
C++通常習(xí)慣單目運(yùn)算符重載為類(lèi)的成員函數(shù),雙目運(yùn)算符重載友元函數(shù),要注意的是有些運(yùn)算符不能重載以及有些運(yùn)算符只能重載類(lèi)成員函數(shù):
=,(),[],-》 只能重載為類(lèi)成員函數(shù)
。,.*,::,?: 不能被重載
C++重載運(yùn)算符的時(shí)候至少有一個(gè)數(shù)據(jù)是自定義類(lèi)型,這個(gè)是重載的必備條件,切記。
責(zé)編AJX
-
C++
+關(guān)注
關(guān)注
22文章
2114瀏覽量
73873 -
源代碼
+關(guān)注
關(guān)注
96文章
2946瀏覽量
66975 -
運(yùn)算符
+關(guān)注
關(guān)注
0文章
172瀏覽量
11116
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
C語(yǔ)言基礎(chǔ)知識(shí)(4)--運(yùn)算符
C++重載運(yùn)算符和重載函數(shù)詳解
C語(yǔ)言運(yùn)算符的使用方法
![<b class='flag-5'>C</b>語(yǔ)言<b class='flag-5'>運(yùn)算符</b>的使用方法](https://file1.elecfans.com/web2/M00/AC/09/wKgaomVDF1-AYBFKAACPJ18ESQk001.jpg)
C++程序設(shè)計(jì)教程之運(yùn)算符重載的詳細(xì)資料說(shuō)明
![<b class='flag-5'>C++</b>程序設(shè)計(jì)教程之<b class='flag-5'>運(yùn)算符</b><b class='flag-5'>重載</b>的詳細(xì)資料說(shuō)明](https://file.elecfans.com/web1/M00/89/A2/pIYBAFyKEt2AJXRMAALC1K1tKWQ736.png)
縮減運(yùn)算符的工程實(shí)例講解
![縮減<b class='flag-5'>運(yùn)算符</b>的工程<b class='flag-5'>實(shí)例</b><b class='flag-5'>講解</b>](https://file.elecfans.com/web1/M00/95/B2/pIYBAFz_Z4CACQmXAAAvobg2N0A263.jpg)
移位運(yùn)算符的應(yīng)用實(shí)例講解
![移位<b class='flag-5'>運(yùn)算符</b>的應(yīng)用<b class='flag-5'>實(shí)例</b><b class='flag-5'>講解</b>](https://file.elecfans.com/web1/M00/95/B2/pIYBAFz_Z4KAJYGTAAAvK2_7d5Q002.jpg)
C運(yùn)算符的優(yōu)先級(jí)和結(jié)合性詳細(xì)解決
python運(yùn)算符是什么
C語(yǔ)言總結(jié)_語(yǔ)句、運(yùn)算符
什么是運(yùn)算符重載
條件(三元)運(yùn)算符
![條件(<b class='flag-5'>三</b>元)<b class='flag-5'>運(yùn)算符</b>](https://file.elecfans.com/web2/M00/8F/7C/poYBAGPkkdmAAnFeAAbOE5WUhL4016.jpg)
c語(yǔ)言運(yùn)算符及例題
C語(yǔ)言的運(yùn)算符
![<b class='flag-5'>C</b>語(yǔ)言的<b class='flag-5'>運(yùn)算符</b>](https://file.elecfans.com/web2/M00/92/C6/poYBAGP0ZRyADmSaAAAauKdGrW4934.jpg)
評(píng)論