摘要:
如果要定义a+b,也应该定义a+=b:在定义二元算术操作符时,也应该提供操作符的赋值形式,并且应该尽量减少重复,提高效率。
一般而言,对于某个二元操作符@(可能是+、-、*等),应该定义其赋值形式,使用a@=b和a=a@b具有相同的含义(只不过第一种形式可能更高效,它只计算一次a)。实现这一目标的标准方法是用@=来定义@,如下所示:
T&T::operator@=(const T&) { //......具体的实现代码...... return *this; } Toperator@(const T& lhs, const T& rhs) { T temp(lhs); return temp @ = rhs; }
这两个函数是协同工作的。赋值形式完成实际工作并返回其左参数。非赋值形式从lhs创建一个临时变量,然后调用赋值形式修改该变量,并返回它。
时间: 2024-10-25 09:28:19