More Effective C++之22

条款22:考虑以操作符复合形式(op=)取代其独身形式(op)
一般而言,操作符的复合版本比独立的版本效率要高,独立版本一般会返回一个新对象,所以要承担这个新对象带来的构造和析构成本;复合版本一般直接把数据写进左值。我们需要注意的是编译器一般会对不具名的对象进行优化,而对具名对象通常无能为力。所以对同样的实现,

template<class T> const T operator+(const T& lhs ,const T& rhs)

{
       //实现一
       return T(lhs) += rhs;
       //实现二
       T result(lhs);
       return result += rhs;
}
对实现一,也许编译器要花费一个临时对象的成本;但对于实现二,肯定要花费一个局部对象的成本;如果一定要选择一种写法,请选择第一种。而且我们在调用操作符的时候,优先调用复合形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值