q1。


  所有插入器函数都具有以下一般形式:


  ostream &operator<<(ostream &stream,class_type obj){
 //body of inserter
    return stream;
}


该函数的第一个参数是对输出流的引用。所以,我的问题是我可以将该参数设为ostream的对象吗?

这个定义有效吗?

ostream &operator<<(ostream stream,class_type obj)  //Can i create a parameter of stream object here


如何使参数成为流对象而不是对流的引用?

q2。
您能否解释一下为什么需要插入器和提取器才能将引用返回到流。 (一个示例将非常有帮助!)

谢谢!

最佳答案

1:不,您不能将其设为对象(即按值传递),因为操作员需要对原始流进行操作。如果传入对象,它将创建一个副本,对其执行操作,然后在函数末尾将其丢弃。

2:他们需要返回对流的引用(不仅是任何流,而且是作为参数传递的同一流),以启用此功能:

cout << "Multiple " << "outputs";


如果您没有返回引用,则链中的下一个<<运算符也将无法处理相同的流,因为您不会返回该引用。

关于c++ - C++中的插入器和提取器功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47154489/

10-12 23:27