Abstract
Operator Overloading讓我們可以自己定義Operator的功能,讓程式可以更精簡,C#也有,不過不是很強調,但C++非常強調Operator Overloading,這是C++的一大特色。

Introduction

以下程式我們試著實做一個『複數』型別,複數由實部,有虛部,複數的加法為(a + bi) + (c +di) = (a +c) + (b+d)i,乘法則是(a + bi) * (c+di) = (ac - bd) + (ad + bc) i。

C++

}


執行結果

(原創) 如何使用Operator Overloading? (C/C++)real:5 imagenary:5
(原創) 如何使用Operator Overloading? (C/C++)real:
0 imagenary:12


第17行使用member function的方式overload + operator,18行使用global function的方式overload * operator,這兩種寫法都可以,惟若使用global function,由於要存取data menber,所以要宣告該function為friend,這樣才能存取data member。

19行我們overload了<< operator,由於也是global function,所以也要宣告friend。

最後49行和55行的user code,直接用+和*就可以計算複數,而且cout也直接支援Complex物件,非常清楚,這就是operator overloading的威力,不過,在class implementation時,operator overloading的語法不是很好寫,雖然語法很有邏輯很有道理,但就是太臭太長了,還真的得時間熟悉才行。

See Also
(原創) 如何對複數進行運算 ? (C/C++)

相关文章: