找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人伊莉需要你的贊助和支持搞笑、娛樂、精彩的影片讓你看
國中蘿莉mega無碼fc2ntr母乳
ai換臉fc2ppvアルカナ情慾古式女超人處刑rctd

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]魔法科高中的劣等

[簡]狼與辛香料 Merch

[簡]狼與辛香料 Merch

[繁]無職轉生 第二季1

見死不救到這種地步

[繁]轉生貴族憑鑑定技
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1767|回復: 7
打印上一主題下一主題

[問題]reference的IO型別函式 相關請教[複製鏈接]

ming2348381 該用戶已被刪除
跳轉到指定樓層
樓主
發表於 2014-5-6 05:10 PM|只看該作者|倒序瀏覽
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
本帖最後由 ming2348381 於 2014-5-6 05:15 PM 編輯

int ,double 之類的reference型別函式我大致上可以理解程式跑出來的前因後果

但是IO型別的我轉不太過來,希望前輩們可以用比較簡單的方式講解,幫助我理解他

問題:
1.
主要在於istream &input(istream &in) 與ostream &output(ostream &out);
當中的各自兩個&不太能理解,為什麼一拿掉&程式就出錯了呢
...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

Rank: 1

帖子
268
積分
185 點
潛水值
17158 米
頭香
發表於 2014-5-7 03:39 AM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
你的理解是什麼?
reference 就是 reference,
他就是傳進來的東西的一個別名,也就是同一個東西
這跟用在什麼上面無關。(除非 operator& 被改變過)

使用道具檢舉

Rank: 1

帖子
72
積分
140 點
潛水值
25459 米
3
發表於 2014-5-7 11:10 AM|只看該作者
本帖最後由 caoh 於 2014-5-7 11:11 AM 編輯

reference 就只是一個引用而已, 加了它
in 會引用到 cin, out 會引用到 cout, 不加它
就會需要根據 cin 建構一個新的 istream (in)
這會呼叫起拷貝建構式 copy consturctor 查網頁就會發現它被刪除了
istream& (const istream&) = delete;

所以拿掉會呼叫錯誤!


補充內容 (2014-5-7 11:12 AM):...
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

ming2348381 該用戶已被刪除
4
發表於 2014-5-7 12:33 PM|只看該作者
原來是因為istream本身就沒有copy consturctor ,難怪不能把&拿掉
這樣第一題我大至上了解出錯原因了
----------------
第二題我自己想了想之後,"猜測"把cin return是不是代表傳回的是
cin的state value
goodbit或eofbit之類的
所以回傳的值不是1就是0

如果是這樣的話,那麼cout的return不就永遠為1嗎?還是也會有0的情況?
因為在此範例中,沒有地方需要用到output的回傳值
...
瀏覽完整內容,請先 註冊登入會員
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 1

帖子
72
積分
140 點
潛水值
25459 米
5
發表於 2014-5-7 02:38 PM|只看該作者
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。
return 就是把那個物件傳回來而已, 不論他是 cin, cout

cin 只是把値取出放在 header 的成員
cout 是把値輸出去, 到哪邊就看它把它們放到哪, 預設是 standard output

傳回 reference 只是代表呼叫完函數之後還可以繼續使用
就像 cout 能夠一直用 << 串起來也是因為它把自己傳回來

cout << 1 << hi.output(count) << 2 << endl;

要怎麼設計都行, 看你想要提供怎樣的介面!...
瀏覽完整內容,請先 註冊登入會員





若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 1

帖子
268
積分
185 點
潛水值
17158 米
6
發表於 2014-5-9 12:07 AM|只看該作者
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。
caoh 發表於 2014-5-7 11:10 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

reference 就只是一個引用而已, 加了它
in 會引用到 cin, out 會引用到 cout, 不加它
就會需要根據 cin 建 ...

感覺你應該要先把語法特性和各種 library/interface 分開來
...
瀏覽完整內容,請先 註冊登入會員
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

ming2348381 該用戶已被刪除
7
發表於 2014-5-9 11:28 AM|只看該作者
本帖最後由 ming2348381 於 2014-5-9 11:31 AM 編輯

分開來看,我知道他的功用
reference引用到一個存在的記憶體位址,沒有產生複製
return回傳值到呼叫處
但若是將特定兩種東西結合在一起,會不知道他產生什麼結果

例如我知道return一個int的變數,就是單純的把那個值,回傳到呼叫他的地方
假設return int變數中的值是5,那我可以很清楚的知道回傳了"5"
...
瀏覽完整內容,請先 註冊登入會員
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 1

帖子
72
積分
140 點
潛水值
25459 米
8
發表於 2014-5-9 12:41 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
本帖最後由 caoh 於 2014-5-9 12:46 PM 編輯

不好意思, 打錯了 XD
只能這樣 hi.output(cout) << 1 << 2 << endl;
主要是讓它作用到同一個物件身上, 若是不同物件產生的狀態變化會無法接續

傳回什麼値你就要去看它的類型 cin/cout 是 istream/ostream
就像 by value 傳回整數它會複製 int, 這邊也會複製 istream/ostream
若你不知到它的內容是什麼, 很抽象, 這是對的, 物件導向就是要把這些封裝起來
...
瀏覽完整內容,請先 註冊登入會員
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部