文章內容**於狄泰軟體唐老師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...