第三十課 操作符過載 狄泰軟體學院

2021-09-26 15:17:43 字數 1809 閱讀 3047

文章內容**於狄泰軟體唐老師c++課程課件

一、需要解決的問題

例子:複數的加法操作

上述方案是不可以的。error no match operator+ in c1+c2

#include class complex 

int geta()

int getb()

friend complex add(const complex& p1, const complex& p2);

};complex add(const complex& p1, const complex& p2)

int main()

c3.a = 4, c3.b = 6

思考:

add函式可以解決complex物件相加的問題,但是complex是現實世界中存在的複數,並且複數在數學中的地位和普通的實數相同。為什麼不能讓「+」操作符合指出複數相加呢?

二、操作符過載

c++中的過載能夠擴充套件操作符的功能

操作符的過載以函式的方式進行

本質:用特殊形式的函式擴充套件操作符的功能

通過operator關鍵字可以定義特殊的函式

operator的本質是通過函式過載操作符

語法:

type operator sign(const type&p1,const type& p2)

sign為系統中預定義的操作符,如:+ -* / 等

例子:操作符的過載初探

#include class complex 

int geta()

int getb()

friend complex operator + (const complex& p1, const complex& p2);

};complex operator + (const complex& p1, const complex& p2)

int main()

c3.a = 4, c3.b = 6

三、操作符過載

可以將操作符過載函式定義為類的成員函式

比全域性操作符過載函式少乙個引數(左運算元)

不需要依賴友元就可以完成操作符過載

編譯器優先在成員函式中尋找操作符過載函式

class type

};

例子:成員函式過載操作符

#include class complex 

int geta()

int getb()

complex operator + (const complex& p)

friend complex operator + (const complex& p1, const complex& p2);

};complex operator + (const complex& p1, const complex& p2)

int main()

complex operator + (const complex& p)

c3.a = 4, c3.b = 6

總結:

操作符過載是c++的強大特性之一

操作符過載的本質是通過函式擴充套件操作符的功能

operator關鍵字是實現操作符過載的關鍵

操作符過載遵循相同的函式過載規則

全域性函式和成員函式都可以實現對操作符的過載

python第三十課 異常 異常物件傳遞過程

演示異常物件傳遞的過程 往上 拋 並將其解決def func1 print func1.print 10 0 deffunc2 print func2.try func1 except exception as e print e def func3 print func3.func2 try fu...

C語言筆記 第三十課 C語言中的字串

字串是有序字元的集合 字串是程式在的基本元素之一 c語言中沒有字串的概念 c語言中通過特殊的字元陣列模擬字串 c語言中的字串是以 0 結尾的字元陣列 在c語言中,雙引號引用的單個或多個字元是一種特殊的字面量 儲存於程式的全域性唯讀儲存區 本質為字元陣列,編譯器自動在結尾加上 0 字元 下面那些是字串...

第12課 操作符過載 上

source example 1 include using namespace std int main cout物件 顯示器物件,輸出 cin物件 鍵盤物件,輸入 source example 1.7 include using namespace std int main int main c...