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)
我得知销售的单位和总对象中的收入将与转换对象中的收入相结合,就像复合赋值运算符(+ =)一样.
我知道这将返回总对象,但我不知道返回总对象意味着什么...
通过引用返回(对被调用的对象)意味着您可以在一个行代码中链接调用; 所有这些调用都绑定到同一个对象:
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)
它返回对自身的引用,这允许方法链接.例如,假设您有2个Sales_data对象,并且想要将它们组合在一起,则可以"链接"调用:
Sales_data s1, s2, total;
//stuff..
total.combine(s1).combine(s2);
Run Code Online (Sandbox Code Playgroud)
因为你返回一个引用,这允许total在调用之间修改对象,这就是它被称为"链"的原因.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |