使用对函数和IO对象的引用(作为参数)的目的是什么
What is the purpose of using references to function and to IO objects (as arguments)?
为什么使用对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对象的引用来进行级联。
相关文章:
- 通过引用函数传递指针参数是什么意思?
- FFT函数的参数是什么意思
- v8 源代码中 ArrayMap 函数的回调 fn 参数是什么?
- 这个奇怪的函数参数是什么?
- 这个函数的参数是什么?
- OpenGL 调试 错误回调函数的 ID 参数是什么?
- 操作员[]作为成员函数的正确模板参数/参数是什么?
- 这个 lambda 的参数是什么类型?
- 函数upper_bound的参数是什么
- mpi_scatterv中的显示参数是什么?
- 这些额外的参数是什么意思
- ON_LBN_SELCHANGE的参数是什么
- 默认参数模板与可变参数模板:最后一个模板参数是什么
- D3DX11CompileFromFile中的第四个参数是什么
- 在 JavaCV 中传递给 cvFindContours() 的参数是什么?
- 这个向量类中的参数是什么
- fcntl() 中的第三个参数是什么
- 参数是什么意思
- std::vector.resize()中的第二个参数是什么意思
- 此签名中的第二个参数是什么意思