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

看板C_and_CPP (C/C++)作者 (沒有存在感的人)時間11年前 (2015/05/23 23:04), 11年前編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/3 (看更多)
問題(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

05/23 23:25, , 1F
這兩種都是同一種狀況: operator 左邊的東西動不到的時候
05/23 23:25, 1F

05/23 23:27, , 2F
其他狀況寫 member 比較好管理也容易知道這些是一起的
05/23 23:27, 2F

05/23 23:27, , 3F
你的 Complex * double 其實可以寫成 Complex 的 member
05/23 23:27, 3F

05/23 23:28, , 4F
參數放 double 即可; 需要外面的是 double * Complex
05/23 23:28, 4F

05/23 23:28, , 5F
不過這種狀況其實一般不會寫 operator 而是用型態轉換 ctor
05/23 23:28, 5F

05/23 23:29, , 6F
當有 Complex::Complex(double) 及 Complex * Complex 時
05/23 23:29, 6F

05/23 23:29, , 7F
編譯輯會把它用前者變成 Complex 再呼叫後者
05/23 23:29, 7F

05/24 02:31, , 8F
話說之前好像有人討論過 #1EmsmTYX , 雖然我想法有點不同
05/24 02:31, 8F
文章代碼(AID): #1LO9RbzR (C_and_CPP)
文章代碼(AID): #1LO9RbzR (C_and_CPP)