→ ggBird: rvalue 不可被修改,所以要加 const 12/27 11:55
→ Caesar08: 只寫 12/27 13:10
→ Caesar08: Complex operator+(const Complex& x,const Complex& y) 12/27 13:10
→ Caesar08: 也可以。friend是看你有沒有access該class的private 12/27 13:11
→ Caesar08: data member 12/27 13:11
→ Frozenmouse: friend就你當對方是朋友,把所有私物都給他看XD 12/27 15:25
→ Frozenmouse: 引數加const則是代表你接下來的動作不能更改到它,以 12/27 15:32
→ Frozenmouse: class來說就只能取member值或透過有宣告const的metho 12/27 15:32
→ Frozenmouse: d來操作 12/27 15:32
→ Frozenmouse: a=b+5.0的5.0應該會被轉成一個Complex的暫時物件 12/27 15:37
→ Frozenmouse: 而通常一般人不會想去改動暫時物件,所以會加const在 12/27 15:37
→ Frozenmouse: 引數 12/27 15:37
推 LPH66: 這裡應該要簡單說明一下, 這個 operator + 不會是成員函式 12/27 15:39
→ LPH66: (也就是名義上不屬於 Complex) 因此為了能存取其私有成員 12/27 15:40
→ LPH66: 才加個 friend 在那裡表示「我的私有成員可以給這人看」 12/27 15:40
→ LPH66: 你原先的寫法的 operator + 是成員函式, 因此 + 左邊僅當 12/27 15:41
→ LPH66: 是 Complex 物件時才會呼叫它, 其他狀況時是不會的 12/27 15:41
→ friends29: 5.0那個常數會先丟給constructor建成物件 如果你有寫 12/28 13:44
→ friends29: 的話 const只是表示function不能亂改這個物件 12/28 13:44
→ friends29: 上面講錯了 我昏頭了 12/29 01:10