c 學習筆記 9 操作符過載

2022-09-23 16:24:11 字數 2045 閱讀 8138

1.c++標準庫:

a.c++標準庫並不是c++語言的一部分,c++標準庫是由c++語言編寫而成的類庫和函式的集合。c++標準庫中定義的類和物件都位於std命名空間中,c++標準庫的標頭檔案都不帶.h字尾,並且c++標準庫涵蓋了c庫的功能,如c庫中對應c++庫中的b.c++標準庫預定義了多數常用的資料結構,如:

c.c++標準庫中的cout和cin的使用方式(**如下):#include

#include

using namespace std;

int main()

2.全域性函式的操作符過載:

a.c++中可以通過operator關鍵字利用函式擴充套件操作符,即操作符過載,operator的本質是通過函式過載實現操作符的過載,所以操作符過載遵循函式過載的規則。b.c++中類的友元的定義:private宣告使得類的成員不能被外界訪問,但是通過friend關鍵字可以以友元的形式開放許可權。**示例如下:#include

using namespace std;

class test

int geta()

int getb()

/*注意友元可以是任何形式的函式*/

friend test operator+ (test& a1, test& a2); //友元宣告

};test operator+ (test& a1, test& a2) //全域性操作符過載函式

int main()

test operator+ (test& n2);

friend test operator+ (test& n1, test& n2);

friend ostream& operator《注意:成員函式的操作符過載,op1 符號 op2 等價於op1.operator符號(op2) 所以說op1必須是這個類的物件

全域性函式的操作符過載,op1 符號 op2 等價於

operator符號(op1, op2) 所以說op1和op2可以是任何型別

4.成員函式和全域性函式的操作符過載適用情況:

a.如果左運算元不是乙個類的物件,只能用全域性函式的操作符過載b.當無法修改左運算元的類時,使用全域性函式進行過載,就像前面過載的其實大量的成員函式的操作符過載,都可以被全域性函式的操作符過載代替,但是對於=賦值操作符、[ ]陣列運算操作符、()函式呼叫操作符、->指標操作符只能通過成員函式進行過載。(這四個操作符是c++編譯器中的特殊規定只能使用成員函式進行操作符過載,不要問為什麼,違反了編譯會出錯)

d.c++編譯器會為每乙個類提供乙個預設的賦值操作符,預設的賦值操作符只是做簡單的值的複製。當類中存在指標成員變數(尤其是指向new出來的記憶體的指標)時,就需要過載賦值操作符了,否則在析構函式中delete的時候,就會對同乙個位址delete兩次!!!**如下:#include

using namespace std;

class test

/* test(const test& n)

friend ostream& operator《注意: operator++ (test& a, int) 為a++ 後置運算,operator++(test& a) 為++a 前置運算

6.&&和||操作符的過載:

a.特別注意不要對&&和||操作符進行過載,因為正常的&&和||內建實現了短路規則,但是操作符過載是靠函式過載來完成的,運算元作為函式引數傳遞,c++中的函式引數都會被求值,無法實現短路規則。**如下:#include

#include

using namespace std;

class test

test operator+ (const test& obj)

{test ret(0);

cout<注意:正常來說 上面的 t1+t2 是應該被短路的,不應該被執行的,但是由於t1+t2實質上是函式的引數,所以被執行了,違背了短路規則!!!

7.本節總結(幾個常出面試題):

a. =賦值操作符 、陣列操作符 、()函式呼叫操作符 、->指標操作符,這個四個操作符只能通過成員函式進行過載

b.++操作符通過乙個int引數進行前置與後置的過載

c. c++中不要過載&&和||操作符

9 操作符過載

一.運算子過載 為運算子提供不同的語義 struct complex complex c1 complex c2 如果想對c1,c2直接相加c1 c2,c語言中直接的方法就是用函式實現。c 中用運算子過載來實現c1 c2 c 中運算子過載的本質 c 中通過operator關鍵字擴充套件操作符 ope...

c 操作符過載 學習筆記

1.過載的限制 1 過載後的操作符必須至少有乙個運算元是使用者自定義的型別,這可以防止使用者把標準操作符給過載。比如 t operator double a,double b error 2 不能違反原來操作符的句法規則。3 不能定義新的操作符,否則那就不叫過載了。4 不能過載下面的操作符 size...

操作符過載 C C 學習筆記

一 什麼是操作符過載?考慮到類成員操作符過載可以訪問類中的私有變數,但是非類成員過載操作符卻不能很方便的訪問類的私有成員,為了方便起見,我們可以通過使用友元 friend 的方式,方便的訪問類的私有成員。舉例 class string 注意 friend宣告緊跟在類名之後,而不是放在public p...