什么时候使用*这个?

时间:2015-03-20 10:13:41

标签: c++

您好我正在研究类,我有以下代码:

Sales_Data & Sales_Data::combine(const Sales_Data & rhs){
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;  }

我想知道为什么我们使用return *thisSales_Data &

3 个答案:

答案 0 :(得分:7)

这样做可以在一个语句中运行多个组合:

Sales_Data d1, d2, d3;
d1.combine(d2).combine(d3);

答案 1 :(得分:6)

当您需要返回对自己的引用时,请执行此操作。您通常会在运算符重载中看到它,以便结果可以自行返回:

Foo &operator=(const Foo &rhs)
{
  // Whatever...
  return *this;
}

通过这样做,它可以让您轻松链接呼叫:

a=b=c;

然而,如果返回指针,它看起来会很乱。

它也常用于流体api设计,以便您可以组合呼叫。使用您的示例,您可以写:

Sales_Data x,y,z;

x.combine(y).combine(z);

然而,如果你的指针潜伏在周围,它会失去一点优雅:

  Sales_Data *x=LoadSalesData();
  Sales_Data y,z;

  x->combine(y).combine(z);

答案 2 :(得分:3)

使用*this返回对当前对象的引用。

这对于允许方法链接通常很有用:

rhs1.combine(rhs2).combine(rhs3);

一个众所周知的例子是流operator<<,它返回对流对象的引用,以使输出连接成为可能。

std::cout << "first" << "second";