14.l 不同点:重载操作符必须至少有一个class或枚举类型的操作数;重载操作符不保证操作数的求值顺序; 相同点:优先级和结合性及操作数的数目不变。
14.2 Sales_data的输入,输出,加法和复合运算符:
std::ostream &operator<<(std::ostream &os, const Sales_data &item)
{
os << item.isbn() << " " << item.units_sold << " "
<< item.revenue << " " << item.avg_price();
return os;
}
std::istream &operator>>(std::istream &is, Sales_data &item)
{
double price;
is >> item.bookNo >> item.units_sold >> price;
if (is)
item.revenue = item.units_sold * price;
else
item = Sales_data();
return is;
}
Sales_data& Sales_data::operator+=(const Sales_data &rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
Sales_data operator+(const