我明白这个
double grade(int &hw) {}
通过引用传递参数。而且这个
double a;
double &b = a;
正在引用a。
但是呢?
istream &read_hw(istream &in) {}
函数名称前的引用运算符表示什么,以及在什么情况下需要效果?
答案 0 :(得分:2)
基本上是相同的:函数read_hw()
返回对istream
实例的引用。
它通常用于返回对象本身(*this
)或方法的参数之一(此处为in
),并避免在按值返回时可能发生的多余临时对象创建。
答案 1 :(得分:0)
这是返回值的类型。在这种情况下,返回istream &
,因此引用istream对象。
如果要由调用者修改返回的值,则需要这样做。例如。您可以返回对成员变量的引用以使其可修改
class X {
private:
int i_;
public:
int &i() {return i_;}
const int &i() const {return i_;}
};
在这种情况下,成员i()
可以用作getter和setter:
X x;
int a = x.i();
x.i() = 10;
在你的iostreams的情况下,该方法返回对传入的istream对象的引用,以启用链接,例如比如cout << a << b << c
,它会召唤3次
ostream &operator << (ostream &, <whatever>)