複數計算第一種形式(自定義複數類):
1 #include 23class
complex 413
14int
geta()
1518
19int
getb()
2023
24 friend complex add(const complex& p1, const complex&p2);
25};
2627 complex add(const complex& p1, const complex&p2)
2836
37int
main()
38
question:
add 函式可以解決complex物件相加的問題;
但是complex是現實世界的確定存在的複數;
並且複數的地位在數學中的地位與普通的實數地位i相同;
為什麼不能+操作符也支援複數相加呢?
操作符過載:
c++中的operator關鍵字可以定義特殊的函式
operator的本質是通過函式過載操作符;
1 #include 23class
complex 413
14int
geta()
1518
19int
getb()
2023
24 friend complex operator + (const complex& p1, const complex&p2);
25};
2627 complex operator + (const complex& p1, const complex&p2)
2836
37int
main()
38
操作符過載的本質就是函式過載.
那還有什麼深度挖掘的地方呢?上面的例子我們使用了友元,而友元是我們盡量避免的,那我們可以怎樣修改呢?
-可以將操作符過載函式定義為類中的 成員函式.
-比全域性操作符過載函式少乙個引數(左運算元)
-不需要依賴友元就可以完成操作符過載;
-編譯器優先在成員函式中尋找操作符操作函式;
例項**分析3:
1 #include 23class
complex 413
14int
geta()
1518
19int
getb()
2023
24 complex operator + (const complex&p)
2533
34 friend complex operator + (const complex& p1, const complex&p2);
35};
3637 complex operator + (const complex& p1, const complex&p2)
3846
47int
main()
48
小結:操作符過載是c++的強大特性之一;
操作符過載的本質是通過函數擴充套件操作符的功能;
operator關鍵字是實現操作符過載的關鍵
操作符過載遵循相同的函式過載規則
全域性函式和成員函式都可以實現對操作符的過載.
29 操作符過載的概念
1 需要解決的問題 include class complex complex int a,int b int main complex c2 complex c3 c1 c2 return 0 很明顯編譯器怎麼會知道你要實現複數運算?那如何用現有的知識實現這個複數的相加運算?include cla...
操作符過載
ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...
操作符過載
1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...