c++ - 重载的返回类型 >>

标签 c++ operators operator-overloading

<分区>

为任何类重载 >> 运算符的标准方法返回类型为 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/

相关文章:

C++ 将数据从浮点 vector 复制到浮点对 vector

c++ - 将 C++ 字符串传递给 C 库以进行内存管理

linux - 绕过 "-"在 bash 中作为算术运算符处理

mongodb - 使用 $and 和多个 $or 查询 MongoDB

c++ - 重载 "+="运算符 : c+=a_times_b works, 但 c+=a*b 没有?

c++ - 使用文档/ View 分离 (MFC) 填充组合框

c++ - 从类模板继承的类的 vector

javascript - 使用 Modulus 为 jquery 循环自定义寻呼机返回

c++ - 如果在重载的输出运算符函数中使用 cout 怎么办?

c++ - dynamic_cast 是否在重载的运算符删除中工作?