[問題] 簡單的C++問題
我使用的 Visual C++ 6.0版本
目前碰到了一個問題 底下是我的程式碼
#include <iostream>
using namespce std;
class coord {
int x , y;
public:
coord() {x = 0;y = 0;}
~coord() {cout << "Here\n"}
coord operator+(coord &ob2);
}
coord coord::operator+(coord &ob2)
{
coord temp;
temp.x = x + ob2.x;
temp.y = y + ob2.y;
return temp;
}
void main()
{
coord ob1(10,10) , ob2(5,3) , o3;
cout << "Before\n";
ob3 = ob1 + ob2;
cout << "After\n";
}
上面的執行結果是
Before
Here
Here
After
Here
Here
Here
我想要問的是 為什麼Before後面會有2個 "Here" 我的認知是:
第一個Here就是暫存物件temp的~coord()
由於ob2的傳入是用reference的方式
那麼就只剩下ob1了
可是我這本書有寫一句話意思是說 當二元運算子被超載時 左邊的運算元被隱含似的
以this傳到函數中而右邊的運算元則由函數引數方式傳遞
所以照課本講的ob1是以this傳進函數
而這個this那不是傳ob1物件的位址嗎??(還是我搞錯了 ??)
那如果是傳位址為什麼還會~coord()呢??
還是第二個解構子發生是別的東西??
謝謝各位的指導 (小弟觀念不佳 麻煩指點)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.56.170
→
06/08 16:30, , 1F
06/08 16:30, 1F
→
06/08 16:33, , 2F
06/08 16:33, 2F
→
06/08 16:35, , 3F
06/08 16:35, 3F
→
06/08 16:36, , 4F
06/08 16:36, 4F
→
06/08 16:37, , 5F
06/08 16:37, 5F
→
06/08 16:38, , 6F
06/08 16:38, 6F
→
06/08 16:39, , 7F
06/08 16:39, 7F
→
06/08 16:40, , 8F
06/08 16:40, 8F
→
06/08 18:31, , 9F
06/08 18:31, 9F
→
06/08 18:32, , 10F
06/08 18:32, 10F
推
06/09 00:37, , 11F
06/09 00:37, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章