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/