如题,下面给出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+是更有效率的。
你也会觉得这个问题对你有帮助:
时间: 2024-11-13 09:51:14