作者wtchen (沒有存在感的人)
看板C_and_CPP
標題[問題] 關於運算子重載(operator overloading)
時間Sat May 23 23:04:03 2015
問題(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;
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.27.173.53
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432393445.A.F5B.html
※ 編輯: wtchen (90.27.173.53), 05/23/2015 23:21:53
※ 編輯: wtchen (90.27.173.53), 05/23/2015 23:22:07
推 LPH66: 這兩種都是同一種狀況: operator 左邊的東西動不到的時候 05/23 23:25
→ LPH66: 其他狀況寫 member 比較好管理也容易知道這些是一起的 05/23 23:27
→ LPH66: 你的 Complex * double 其實可以寫成 Complex 的 member 05/23 23:27
→ LPH66: 參數放 double 即可; 需要外面的是 double * Complex 05/23 23:28
→ LPH66: 不過這種狀況其實一般不會寫 operator 而是用型態轉換 ctor 05/23 23:28
→ LPH66: 當有 Complex::Complex(double) 及 Complex * Complex 時 05/23 23:29
→ LPH66: 編譯輯會把它用前者變成 Complex 再呼叫後者 05/23 23:29
→ Feis: 話說之前好像有人討論過 #1EmsmTYX , 雖然我想法有點不同 05/24 02:31