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;

这篇博客讨论了C++ Primer第五版中14.1到14.2.2章节的内容,涉及重载运算符的异同点,如操作数类型、求值顺序等。重点讲述了Sales_data类的输入、输出、加法和复合运算符的实现,并通过例子解析了不同类型的==运算符。同时,提到了赋值运算符%=、自增运算符++以及成员和非成员运算符的区别。此外,还给出了Date类的输入输出运算符定义以及String类的print函数如何用于重载operator<<。最后,文章通过问题和案例分析了输入错误可能导致的后果。
最低0.47元/天 解锁文章
394

被折叠的 条评论
为什么被折叠?



