看板 C_and_CPP 關於我們 聯絡資訊
問題(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