[問題] 關於運算子重載(operator overloading)

作者: wtchen (沒有存在感的人)   2015-05-23 23:04:03
問題(Question):
目前正在寫一個可以進行加減乘除的大數class。
有一個關於operator overloading的問題:
據我所知可以使用method(寫在class裏面)或function(class外面)
請問一般情況下使用method還是function好呢?
我想要overload的operator包括
+, -, *, /, +=, -/, *=, /=, %
目前我唯二知道需要用function解決的有兩種情況:
- operator 作用於 class 跟另一種 class
ex: Complex a; double b; Complex c = a * b;
- 需要用到cout <<
ex: Complex a(1,1); cout << a << endl;
謝謝。
作者: LPH66 (-6.2598534e+18f)   2015-05-23 23:25:00
這兩種都是同一種狀況: operator 左邊的東西動不到的時候其他狀況寫 member 比較好管理也容易知道這些是一起的你的 Complex * double 其實可以寫成 Complex 的 member參數放 double 即可; 需要外面的是 double * Complex不過這種狀況其實一般不會寫 operator 而是用型態轉換 ctor當有 Complex::Complex(double) 及 Complex * Complex 時編譯輯會把它用前者變成 Complex 再呼叫後者
作者: Feis (永遠睡不著 @@)   2015-05-24 02:31:00
話說之前好像有人討論過 #1EmsmTYX , 雖然我想法有點不同

Links booklink

Contact Us: admin [ a t ] ucptt.com