声明期间函数名中的引用运算符

时间:2012-03-13 16:22:53

标签: c++

我明白这个

double grade(int &hw) {}

通过引用传递参数。而且这个

double a;
double &b = a;

正在引用a。

但是呢?

istream &read_hw(istream &in) {}

函数名称前的引用运算符表示什么,以及在什么情况下需要效果?

2 个答案:

答案 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>)