c++ - 运算符和返回类型是什么意思?
问题描述
所以据我所知,
istream& operator >> (istream &in, int &n);
是关于 >> 如何工作的声明(或以某种方式重载它)
但是我对这个“函数的”返回类型“istream&”感到困惑。
如果我做类似 cin >> x; 这意味着我正在引用 x,但我不理解返回类型 istream & 和参数“in”。
这个函数看起来像什么定义的?什么是“在”?它实际上返回的是什么?因为 cin >> x 除了接受输入之外确实做了任何事情,那么为什么它必须返回任何东西呢?
谢谢!
解决方案
运算符 >> 的标准实现将返回对 istream &in 参数的引用,这意味着它返回完全相同的对象。
这是为了方便起见,您可以编写如下代码:cin >> x >> y;
编译器将取运算符左侧的内容并将第一个参数放入第二个参数中。cin >> x >> y 将转换为operator>>( (operator>>(cin, x), y );
这将首先将 x 添加到流中并使用返回,流本身,并将 y 写入其中。
推荐阅读
- buffer - 在 WebGL 中绘制多个模型
- scala - 尽管需要方法来更新图像,但图像仍被冻结
- javascript - Vanilla WebComponents 方法:“从 html 导入 js”和“从 js 获取 html”文件之间有什么真正的区别
- flutter - 如何将验证文本字段设置为包?
- python - 如何使用 Pytest-mock 测试输出
- unity-container - 使用开放通用单例注册时,“ContainerControlledLifetimeManager 的值只能设置一次”
- php - Laravel firstOrFail 函数重定向到错误的路由
- r - R:如何从向量有效地创建类别?
- composer-php - 无法用 Composer 替换包
- php - 如何从另一个函数获取 $data['string'] 到索引函数