【发布时间】:2019-10-27 00:57:46
【问题描述】:
据我所知,
istream& operator >> (istream &in, int &n);
是关于>>如何工作的声明(或以某种方式重载它)
但我对这个“函数”的返回类型“istream&”感到困惑。
如果我做类似 cin >> x;这意味着我在引用 x,但我不明白返回类型 istream & 和参数“in”。
这个函数的定义是什么样的?什么是“在”?它实际上返回的是什么?因为 cin >> x 除了接受输入之外确实做了任何事情,所以为什么它必须返回任何内容?
谢谢!
【问题讨论】:
-
这是对
istream的引用。 - 和istream& operator >> (istream &in, int &n);表示n将被修改 - 而不是const <type>&n -
返回对流的引用是允许构造像
cin >> x >> y -
正如您的标题所暗示的那样,没有“
&operator”。函数名称为operator >>(两个标记),&是一个不相关的标记,用于指示引用类型。所以&operator不是一个东西。 -
@curiousguy 很好发现 - 我改了
-
@ming 你需要学会破译令人惊讶但内部一致的 C/C++ 声明东西(变量或函数)的原则。这称为 声明符:
& operator >> (istream &in, int &n)。看,&是它的一部分,但不是函数名称的一部分,它只是operator >>。它的内容是:使用可修改的左值istream调用operator >>,int之一正式返回一个引用,即给出一个左值。左值是引用已识别对象的表达式。
标签: c++ syntax operator-overloading iostream function-declaration