[問題] 回傳Reference的用意
最近開始看介紹指標的書
我首先想問的是,int & a,他的資料型態是int ,還是int& ?我覺得是int,畢竟a只是
某個int變數的別名
再來就是
struct says
{
......
};
int main()
{
says x;
........
calls(x);
......
}
says &calls(says & ref)
{
says newobj;
newobj=ref; //在這邊,newobj也會跟x在同一個位址上??
.......... //修改newobj的值
return newobj;
}
書上特別強調說不可回傳reference的區域變數,因為calls結束時newobj已經被回收掉了
可是我的想法是,newobj本身就不是x的別名同時也不是ref的別名,當然沒有辦法改變x
的值(除非他這樣寫says& newobj=ref),為什麼書上要特別強調這一點呢?
還有就是..我剛剛做了測試
says &calls(says & ref)
{
says x;
says newobj;
newobj=ref;
..........
return x;
}
所要回傳的應該是says &;
但是我回傳的僅是says
請問為什麼compile還是可以過呢?
還是因為says&的資料型態就是says?只是別名而已?
還有請問回傳reference的用意何在呢?
懇請指教,謝謝^^
--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.172.247.99
推
11/13 14:32, , 1F
11/13 14:32, 1F
推
11/13 15:41, , 2F
11/13 15:41, 2F
→
11/13 15:41, , 3F
11/13 15:41, 3F
→
11/13 15:41, , 4F
11/13 15:41, 4F
→
11/13 15:42, , 5F
11/13 15:42, 5F
→
11/13 15:42, , 6F
11/13 15:42, 6F
→
11/13 15:42, , 7F
11/13 15:42, 7F
→
11/13 20:52, , 8F
11/13 20:52, 8F
推
11/13 20:55, , 9F
11/13 20:55, 9F
→
11/13 20:55, , 10F
11/13 20:55, 10F
推
11/13 20:56, , 11F
11/13 20:56, 11F
→
11/13 21:03, , 12F
11/13 21:03, 12F
推
11/13 21:27, , 13F
11/13 21:27, 13F
→
11/13 21:27, , 14F
11/13 21:27, 14F
推
11/13 21:29, , 15F
11/13 21:29, 15F
→
11/13 21:30, , 16F
11/13 21:30, 16F
→
11/15 09:16, , 17F
11/15 09:16, 17F
→
11/15 09:17, , 18F
11/15 09:17, 18F