(一)概念:什麼是重載
1 所謂重載,就是重新賦予新的含義。函數重載就是對一個已有的函數賦予新的含義,使之實現新功能,因此,一個函數名就可以用來代表不同功能的函數,也就是”一名多用”。(運算符重載的本質是一個函數)
2 運算符重載的限制:
只需記住下面幾個特殊的運算符不能重載即可: 1 .(點) 2.::(域解析符) 3 .*(對象選擇符) 4 ?:(條件運算符) 5. sizeof
重載運算符函數可以對運算符做出新的解釋,但原有語義基本不變:
(1)重載不能改變運算符的優先級和結合性
(2)不改變運算符所需要的操作數
(3)不能創建新的運算符
(二)運算符重載實現的倆種方法:
1.成員函數 2.友元函數(全局函數實現)
1)運算符函數可以重載爲成員函數和友元函數
2)關鍵區別在於成員函數有this指針, 而友元函數沒有this指針。
3)不管是成員函數,還是友元函數,運算符的使用方法相同,但參數傳遞的方式,實現代碼不同,應用場合也不同
4)如果倆個參數,左操作數在類的內部無法實現時,只能聲明爲友元函數實現(全局函數)
3二元運算符
//通過類成員函數完成-操作符重載
//函數聲明 Complex operator-(Complex &c2)
//函數調用分析
//用類成員函數實現-運算符重載
Complex c4 = c1 - c2;
c4.printCom();
//c1.operator-(c2);
4一元運算符
5前置和後置++總結:
6.全局函數、類成員函數方法實現運算符重載步驟:
1)要承認操作符重載是一個函數,寫出函數名稱operator+ ()
2)根據操作數,寫出函數參數
3)根據業務,完善函數返回值(看函數是返回引用 還是指針 元素),及實現函數業務
7.成員函數與友元函數選擇方法:
1)當無法修改左操作數的類時,使用全局函數進行重載
2) =, [], ()和->操作符只能通過成員函數進行重載
(三)總結
1.操作符重載是C++的強大特性之一
2.操作符重載的本質是通過函數擴展操作符的語義
3.operator關鍵字是操作符重載的關鍵
4.friend關鍵字可以對函數或類開發訪問權限
5.操作符重載遵循函數重載的規則
6.操作符重載可以直接使用類的成員函數實現
7.=, [], ()和->操作符只能通過成員函數進行重載
8.++操作符通過一個int參數進行前置與後置的重載
9.C++中不要重載&&和||操作符