建议模式:用+=操作而不是+,省去了复制对象
习题14.12,是用+=去调用+,缺点自然是复制很多次,不过为什么会出错,this不是和rhs一样的引用么?因为是成员函数,this错在哪了
inline
Sales_item& Sales_item::operator+=(const Sales_item &rhs){
Sales_item item;
item = *this + rhs;//pe14_12.cpp:56:17: error: no match for ‘operator+’ in ‘*(Sales_item*)this + rhs’
*this = item;
return *this;
}
Sales_item
operator+(const Sales_item& lhs, const Sales_item& rhs){//operator+ need to call operator+=
Sales_item ret(lhs);
ret += rhs;
return ret;
}
根据原示例类
== 和 != 配套出现,而!=通过调用==而大大简化代码 return !(lhs == rhs);
注意成员函数的const属性,this对函数性质的要求较高(eg. same_isbn())
review:inline不是必须配合类内的,在外边也可以用,就是一种优化