c++ - 运算符和返回类型是什么意思?

标签 c++ syntax operator-overloading iostream function-declaration

据我所知,

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

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

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

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

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

谢谢!

最佳答案

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

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

编译器会将运算符左侧 的内容放入第一个 参数,将右侧 放入>第二个。 cin >> x >> y 将翻译成 operator>>( (operator>>(cin, x), y );

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

关于c++ - 运算符和返回类型是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575873/

相关文章:

c++ - 硬币翻转 C++ 循环

c++ - 如何在 C/C++ 中描述指向数组的 const 指针?

c++ - 如何用两个参数重载 () 运算符;像(3,5)?

c++ - 使用类和int参数作为模板的C++重载运算符

c++ - 实现之间的随机输出不同

C 应用程序之上的 C++ UI 表单

mysql - ON 语句中的别名是未知列

syntax - Agda 中自定义语法声明的规则是什么?

c# - 在 C# 中是否可以通过以下方式重载泛型转换运算符?

c++ - SDL2 FillRect 与 SDL_Window 问题