首页 > 解决方案 > 运算符和返回类型是什么意思?

问题描述

所以据我所知,

istream& operator >> (istream &in, int &n);

是关于 >> 如何工作的声明(或以某种方式重载它)

但是我对这个“函数的”返回类型“istream&”感到困惑。

如果我做类似 cin >> x; 这意味着我正在引用 x,但我不理解返回类型 istream & 和参数“in”。

这个函数看起来像什么定义的?什么是“在”?它实际上返回的是什么?因为 cin >> x 除了接受输入之外确实做了任何事情,那么为什么它必须返回任何东西呢?

谢谢!

标签: c++syntaxoperator-overloadingiostreamfunction-declaration

解决方案


运算符 >> 的标准实现将返回对 istream &in 参数的引用,这意味着它返回完全相同的对象。

这是为了方便起见,您可以编写如下代码:cin >> x >> y;

编译器将取运算符左侧内容并将第一个参数放入第二个参数中。cin >> x >> y 将转换为operator>>( (operator>>(cin, x), y );

这将首先将 x 添加到流中并使用返回,流本身,并将 y 写入其中。


推荐阅读