使用对函数和IO对象的引用(作为参数)的目的是什么

What is the purpose of using references to function and to IO objects (as arguments)?

本文关键字:参数 是什么 引用 函数 IO 对象      更新时间:2023-10-16

为什么使用对IO流的引用而不是流本身?关于函数的引用也是同样的问题。试着研究这个话题我还是听不懂

在下面的代码中,函数只在给定流上打印给定QueryResult对象的结果。

//declaration  
ostream & print(ostream & os, const QueryResult &qr);

这里没有"对函数的引用"。第一个&是返回类型的一部分。

ostream& print(ostream& os, const QueryResult& qr);

函数返回一个ostream&,并将一个ostream&作为参数,因为流无法复制。QueryResult作为常量引用传递,以避免可能昂贵的副本。

您必须知道,在函数调用期间,参数会复制到函数的参数中。但是IO类不允许复制它们的对象。因此,我们不能直接传递对象(istream或ostream(。或者更简单地说

因为我们不能复制IO类型,所以我们不能有一个参数或返回类型是流类型之一。执行IO的函数通常会传递和通过引用返回流。

还有一件事。

读取或写入IO对象会更改其状态,因此引用不能是常量

它在方法链接中很有用。目的是返回对流的新引用,该流可以被传递给运算符<lt;((在链中。

IO对象无法复制,因此我们不能有IO类型的返回或参数。所以要进行IO操作,我们必须传递对IO对象的引用来进行级联。