2012-08-16 89 views
2

我在Accelerated C++上閱讀了此內容。這是一個簡化版本。在C++中返回對istream的引用

istream& read_hw(istream& in, Student_info& s) 
{  
    in >> s.name >> s.midterm >> s.final; 
    return in; 
} 

然後,我們可以調用函數爲:

Student_info s; 
read_hw(cin, s); 

我的問題是,

  1. 什麼是返回的IStream參考點?由於這兩個參數都是通過引用傳遞的;
  2. 當調用該函數,我們似乎並不關心返回值
+0

這是C++/IO上的一個[很棒的站點](http://augustcouncil.com/~tgibson/tutorial/iotips.html)。它幫助了很多。 – rliu054 2012-08-16 17:29:44

回答

8

你應該讀下一段:

返回流使我們的調用寫

if (read_hw(cin, homework)){/*...*/} 

作爲

的縮寫
read_hw(cin, homework); 
if (cin) {/*...*/} 
4

將引用返回到istream可啓用級聯。例如:

int i, j; 
std::cin >> i >> j; 
// Equivalent to std::cin.operator>>(i).operator>>(j); 

istream::operator>>()回報istream&,使級聯>>作品。

+0

如果是運營商>>它會....嗯,你仍然可以但語法不是很好 – jcoder 2012-08-16 16:38:10