通过引用返回函数调用

时间:2016-06-22 05:04:25

标签: c++

enter image description here

我正在阅读教科书,然后我遇到了上面的功能" Sales_data :: combine()"。

如果我这样做

Total.combine(trans);

其中Total和trans是Sales_data,在此函数调用之后,对象Total会被更改吗?什么是返回* this的重点?

1 个答案:

答案 0 :(得分:6)

  

在此函数调用之后,对象Total是否会被更改?

如果trans.units_sold和/或trans.revenue不为零,则会更改,因为Total中的相同字段会受到函数实现中+=语句的影响。

  

返回* this的重点是什么?

它允许您将更多调用链接到成员函数,因此您可以执行以下操作:

Total.combine(trans1).combine(trans2);

这会将trans1trans2的值合并到Total

如果Sales_data有其他功能,您可以使用combine的返回值来访问它们。例如,如果有operator<<(std::ostream&, const Sales_data&)函数用于流式传输Sales_data对象,则可以写...

std::cout << Total.combine(trans1) << '\n';

...在从trans1打印更新值之前,会将Total中的值合并到Total