关闭

More Effective C++之22

670人阅读 评论(0) 收藏 举报
条款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;
}
对实现一,也许编译器要花费一个临时对象的成本;但对于实现二,肯定要花费一个局部对象的成本;如果一定要选择一种写法,请选择第一种。而且我们在调用操作符的时候,优先调用复合形式。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:612519次
    • 积分:9788
    • 等级:
    • 排名:第1782名
    • 原创:340篇
    • 转载:141篇
    • 译文:0篇
    • 评论:69条
    最新评论