本章節主要講解是運算符重載。運算符重載是賦予運算符能操作自定義類型的功能。C++運算符重載主要分為以下三類:
類成員函數重載
友元函數重載
流運算符重載
類重載
重載的運算符是帶有特殊名稱的函數,函數名是由關鍵字 operator 和其后要重載的運算符符號構成的。與其他函數一樣,重載運算符有一個返回類型和一個參數列表。如下實現對象與對象的加法的測試代碼:
對于上述重載: firstScore+secondScore 一般解析為 firstScore.operator +(secondScore) 的方式。operator+是函數名,對象調用成員函數的方式解析對象與對象的加法。所以類重載函數的參數個數是比運算符實際的操作數少1。
友元重載
友元重載,就是重載函數是友元函數,如下判斷兩個美女得分誰高的測試代碼:
上述代碼中,我們真正要比較的其實只是兩個美女的各自得分,對于Liu》Di 重載函數的解析過程為 operator》(Liu,DI);operator》是函數名,故友元重載的參數個數是等于運算符的操作數的。
流重載
流運算符的重載只能采用友元的方式,并且流對象當做參數的時候必須采用引用(&)的方式,所以這里小編單獨歸結為一類。具體實例代碼如下:
特殊重載
前置++或者-- 與后置++以及--的重載,類重載的時候并不遵循上述情況,通常我們會帶一個int標識參數當做后置++或者--的重載,如下代碼:
從這一點上看,其實前置之所以比后置快,一目了然,躲了一個對象的創建過程。
重載注意項
C++通常習慣單目運算符重載為類的成員函數,雙目運算符重載友元函數,要注意的是有些運算符不能重載以及有些運算符只能重載類成員函數:
=,(),[],-》 只能重載為類成員函數
。,.*,::,?: 不能被重載
C++重載運算符的時候至少有一個數據是自定義類型,這個是重載的必備條件,切記。
責編AJX
-
C++
+關注
關注
22文章
2117瀏覽量
74837 -
源代碼
+關注
關注
96文章
2951瀏覽量
68001 -
運算符
+關注
關注
0文章
172瀏覽量
11373
發布評論請先 登錄
評論