作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[觀念] reference 觀念詢問
時間Mon Sep 7 14:00:33 2009
看到上一篇opt ==的問題
雖然知道她問題出在哪裡
不過我就自己玩一玩
發現一個地方有點不太了解
列出來請各位指點
class GG{
public:
GG(){}
const int& GGG(const GG a)
{
getX()=a.x; //????????????????這行跟我想的不一樣
return a.x;
}
int &getX()
{
return x;
}
int x;
};
main()中寫
GG gg;
GG bb;
bb.x=5566;
gg.GGG(bb);
cout<<gg.x; //印出5566 沒問題
bb.x=7788;
cout<<gg.x; //還是印出5566...??
我在想 getX()其實就是this->x的reference 等於 a.x
既然這樣 我bb.x設定成7788 應該會連帶的把gg.x值給修改了
這邊是不是我觀念有點問題
因為其實一般我可以理解
int &p=gg.getX();
p改 會等於 改變gg.x;
這邊是透過回傳方式取額一個reference好像就不是我想像的那樣
到底實際上該怎麼解釋
請教各位謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.187
推 dendrobium:const int& GGG(const GG a) // a is a copy 09/07 14:05
推 dendrobium:上面跟這個無關XD 09/07 14:11
→ QQ29:XD 我剛剛還想了一下我是不是漏考慮了什麼 09/07 14:12
→ dendrobium:getX() = XXX 只是把 this->x = XXX 09/07 14:12
→ dendrobium:並非是改變refer的對象 , C++的refer是不能改對象的 09/07 14:13
→ QQ29:d大妳1F講得好像也是我漏考慮的 a是一份copy= = 09/07 14:14
→ QQ29:所以其實 他還是只是做一個assign的動作而以嚕 09/07 14:15