通过引用返回函数调用

ran*_*ndy 0 c++

在此输入图像描述

我正在阅读教科书,然后我遇到上面的函数"Sales_data :: combine()".

如果我做

Total.combine(trans);
Run Code Online (Sandbox Code Playgroud)

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

Ton*_*roy 6

在这个函数调用之后,对象Total会被更改吗?

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

什么是返回*这个点?

它允许您链接对成员函数的进一步调用,因此您可以执行以下操作:

Total.combine(trans1).combine(trans2);
Run Code Online (Sandbox Code Playgroud)

这将来自合并值trans1trans2Total.

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

std::cout << Total.combine(trans1) << '\n';
Run Code Online (Sandbox Code Playgroud)

...这会从合并这些值trans1Total从打印更新值之前Total.