码迷,mamicode.com
首页 > 其他好文 > 详细

调用operator+=来定义operator+比其他方法更有效?

时间:2016-04-09 15:04:01      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:

如题,下面给出operator+=和operator+的实现

 1 Sales_data& 
 2 Sales_data::operator+=(const Sales_data &rhs)
 3 {
 4     units_sold += rhs.units_sold;
 5     revenue += rhs.revenue;
 6     return *this;
 7 }
 8 
 9 Sales_data
10 operator+(const Sales_data &lhs, const Sales_data &rhs)
11 {
12     Sales_data sum = lhs;
13 sum += rhs; 14 return sum; 15 }

    上面的代码是用调用operator+来定义operator+=的。

    首先operator+有两个参数,其参数类型为const,是不需要改变的,其返回类型为Sales_data类型的一个拷贝。不过每次都需要在函数体内定义一个临时变量,用来返回拷贝。

    而operator+=有一个参数,其参数类型为const,不需要改变,其返回类型为Sales_data类型的引用。每次不需要在函数内创建临时变量,直接可返回*this。

    如果用operator+来定义operator+=的话,则不论调用operator+还是operator+=,每次都会创建一个Sales_data的临时变量。

    所以说调用operstor+=来定义operator+是更有效率的。

    你也会觉得这个问题对你有帮助:

http://stackoverflow.com/questions/21071167/why-is-it-more-efficient-to-define-operator-to-call-operator-rather-than-the

调用operator+=来定义operator+比其他方法更有效?

标签:

原文地址:http://www.cnblogs.com/clairvoyant/p/5371494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!