在成员函数中返回类对象是什么意思?

Kyl*_*lue 5 c++ return reference

我很擅长使用C++进行编程,所以如果这很愚蠢,那就很抱歉.我一直在研究c ++入门书,有些东西我无法理解.以此功能为例:

Sales_data& Sales_data::combine(const Sales_data &rhs)
{
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

我们使用以下方法调用函数:

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

我得知销售的单位和总对象中的收入将与转换对象中的收入相结合,就像复合赋值运算符(+ =)一样.

我知道这将返回总对象,但我不知道返回总对象意味着什么...

son*_*yao 9

通过引用返回(对被调用的对象)意味着您可以在一个行代码中链接调用; 所有这些调用都绑定到同一个对象:

total.combine(trans).combine(trans2).combine(trans3);
Run Code Online (Sandbox Code Playgroud)

这相当于:

total.combine(trans);
total.combine(trans2);
total.combine(trans3);
Run Code Online (Sandbox Code Playgroud)

(当然,这并不意味着你必须调用相同的方法,你可以与具有类似特征的其他方法混合使用.)

这种习惯用法经常使用在像运营商的实现方式中operator=,operator<<,operator>>等等,这也是可能的,以与链接调用:

a = b = c;
cout << a << b << c;
Run Code Online (Sandbox Code Playgroud)


Som*_*ken 7

它返回对自身的引用,这允许方法链接.例如,假设您有2个Sales_data对象,并且想要将它们组合在一起,则可以"链接"调用:

Sales_data s1, s2, total;
//stuff..
total.combine(s1).combine(s2);
Run Code Online (Sandbox Code Playgroud)

因为你返回一个引用,这允许total在调用之间修改对象,这就是它被称为"链"的原因.