Sales_data::combine使用作用域运算符以说明:我们定义了一个名为combine的函数,并且该函数声明在Sales_data类的作用域内,因此当combine使用untis_sold和revenue时,也是隐式地使用了Sales_data的成员
我们调用这个combine时
total.combine(trans)total的地址被绑定到隐式的this参数上,而rhs绑定到了trans上
你应该注意到了,这个函数的关注点应该在于返回类型和返回语句
combine设计的初衷是尽量模仿+=运算符,+=把左侧的运算对象当成左值返回,为了尽可能一致,combine必须返回引用类型(这时左侧运算对象是一个Sales_data对象,所以返回类型为Sales_data&)
怎么返回呢,现在我们就不需要使用隐式的this指针访问函数调用者 的某个具体成员,而是需要把调用函数的对象当成一个整体来访问
return *this;return语句解引用this指针,获得了执行该函数的对象,total.combine(trans)就会返回对total的引用