算术操作符和关系操作符(1)

建议模式:用+=操作而不是+,省去了复制对象


习题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不是必须配合类内的,在外边也可以用,就是一种优化


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值