练习14.13:
对于Sales_data类,其实我们并不需要再为它添加其他算术运算符。但是这里我们可以考虑为它实现一个减法运算符。
class Sales_data
{friend Sales_data operator-(const Sales_data &lhs,const Sales_data &rhs);public:Sales_data&operator-=(const Sales_data &rhs);
};Sales_data operator-(const Sales_data &lhs,const Sales_data &rhs)
{Sales_data sub = lhs;sub-=rhs;return sub;
}Sales_data&Salse_data::operator-=(const Sales_data &rhs)
{units_sold-=rhs.units_sold;revenue-=rhs.revenue;return *this;
}
练习14.14:
显然,从头实现operator+的方式与借助operator+=实现的方式相比,在性能上没有优势,而可读性上后者显然更好。因此,在此例中代码复用是最好的方式。
练习14.15:
在练习7.40中,我们编写了类Date。算术运算对Date并没有太大意义,因此不需要为Date重载算术运算符。