[問題] 觀念問題 class自訂operator

看板C_and_CPP作者 ( )時間12年前 (2012/06/23 06:34), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
一個function在傳遞參數時若是 pass by value 那進入那個function時 參數會被複製一份去做運算 那如果是自訂的 class operator 呢? 假設 Vector A; Vector B; Vector C; C = A+B; //假設我已經定義好 "+" 請問在算A+B時 會是像function 的 pass by value 複製一份A和B再去算C 還是像function的 pass by address 複製A和B的address 背後的原理是什麼呢? 謝謝 ------------------------ 補充: 假設operator是一個向量加法定義如下 程式在算 A+B時會是pass by value 嗎 Vector Vector::operator+ (Vector param) { Vector temp; temp.x = x + param.x; temp.y = y + param.y; temp.z = z + param.z; return (temp); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 75.72.176.13

06/23 07:44, , 1F
端看 operator= 和 operator+ 是怎麼寫的。
06/23 07:44, 1F

06/23 08:52, , 2F
剛才補充了寫法
06/23 08:52, 2F
※ 編輯: qqdn 來自: 75.72.176.13 (06/23 08:53)

06/23 09:01, , 3F
這寫法是 pass by value 沒錯。
06/23 09:01, 3F

06/23 09:04, , 4F
所以operator的運作就和function是一樣的嗎
06/23 09:04, 4F

06/23 09:06, , 5F
就是說 compiler 是不是會把operator當作是function去看
06/23 09:06, 5F

06/23 09:09, , 6F
會。你的寫法 C = A+B 會被解釋成 C=A.operator+(B);
06/23 09:09, 6F

06/23 09:26, , 7F
原來如此 謝謝~!
06/23 09:26, 7F

06/24 01:14, , 8F
一般來說是pass by reference
06/24 01:14, 8F
文章代碼(AID): #1FvFBpLQ (C_and_CPP)