天天看點

C++基礎文法學習(4)

1. 如果能作為左值則傳回引用,例如a+b不能作為左值,a=b可作為左值,a++不能作為左值,其傳回一個值,是常量,++a可作為左指,傳回a這個變量

2.當無法修改左操作數的類時,使用全局變量進行重載,如<<和>>,因為無法修改ostream和istream,隻能用友元函數進行重載,若用成員函數,成員變量會作為左值,而在cout中,成員變量隻能作為右值,發生沖突

3.=,[],(),->隻能用成員函數進行重載,在對類對象使用這幾個操作符時,系統會調用成員函數中的重載操作符,如沒有,則預設調用原先已經重載過的操作符,但當這幾個操作符被聲明為友元函數時,C++認為類中沒有它們的重載,是以會去調用預設的重載,但又發現全局函數中的重載類型與其比對,又要去調用這幾個友元函數,是以會産生沖突,C++是不允許出線這種情況的。

4.C++中通過一個占位參數來區分前置運算和後置運算,後置運算預設是有占位參數的那一個,前置是沒有占位參數的那一個

5.不要重載&& ,||,會違背短路原則,如&&的第一個參數已經是零,但還是會運作後一個參數

6.友員函數重載運算符常用于運算符的左右操作數類型不同的情況

7.操作符重載是C++的強大特性之一

操作符重載的本質是通過函數擴充操作符的語義

operator關鍵字是操作符重載的關鍵

friend關鍵字可以對函數或類開發通路權限

操作符重載遵循函數重載的規則

操作符重載可以直接使用類的成員函數實作

=, [], ()和->操作符隻能通過成員函數進行重載

++操作符通過一個int參數進行前置與後置的重載

C++中不要重載&&和||操作符