<分区>
为任何类重载 >> 运算符的标准方法返回类型为 istream(或任何输入流)的对象是否有充分的理由。
例如,由于这个原因,代码如下
y = (cin >> x) ;
不会工作,如果重载 >>>
具有输入对象的返回类型,它就会工作。
<分区>
为任何类重载 >> 运算符的标准方法返回类型为 istream(或任何输入流)的对象是否有充分的理由。
例如,由于这个原因,代码如下
y = (cin >> x) ;
不会工作,如果重载 >>>
具有输入对象的返回类型,它就会工作。
最佳答案
For example, due to this, code like
(cin >> x) = y;
won't work. And it would have if overloading >> had a return type of the input object.
不,不一定 - 在许多情况下您会看到 error: lvalue required as left operand of assignment
,除非您返回引用。 ( click here for a demonstration )
一般原因是它允许链接,例如做类似的事情
mystream >> a >> b >> c;
对于输入/输出流,还有一个额外的好处是可以将流转换为 void*
(C++03) 或 bool
(C++ 11),它允许检查结构中的错误,例如
while (cin >> x) { ... }
关于c++ - 重载的返回类型 >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15482412/