在C ++中返回对istream的引用

时间:2012-08-16 16:30:01

标签: c++ reference istream

我在Accelerated C ++上看到了这个。这是一个简化版本。

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. 在调用函数时,我们似乎并不关心返回值

2 个答案:

答案 0 :(得分:8)

你应该阅读下一段:

  

返回流允许我们的调用者编写

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

的缩写
read_hw(cin, homework);
if (cin) {/*...*/}

答案 1 :(得分:4)

返回对istream的引用可启用级联。例如:

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

istream::operator>>()返回istream&,以便级联>>有效。