繁体   English   中英

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

[英]what does the the operator& return type mean?

所以据我所知,

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

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

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

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

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

谢谢!

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

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

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

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

这意味着在这种特殊情况(以及许多其他情况)中它是一种传递 根据给定的输入返回一些合理的东西是一个合同。 返回is是明智之举,因为它会生成如下结构:

stream >> variableA >> variableB >> variableC

可能的。 那是因为stream >> variableA返回stream其他操作也是如此。

如果 function,

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

相反,返回,

istream operator >>....

然后,事情变得复杂起来。 在最坏的情况下,每次调用>>都会复制 stream object 并返回副本,然后将其复制并存储在调用者的堆栈中,然后调用所有被复制内容的析构函数,特殊情况除外.

通过返回一个引用,我们可以做一些事情,比如链接:

a << b << "Yo!" << c << "Wassup?" << endl;

...没有所有这些废话。

&表示“引用”,它本质上是一个具有更强编译时检查和更好语法的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM