C++ Primer(第5版) 练习 14.20
练习 14.20 为你的Sales_data类定义加法和复合赋值运算符。
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
struct Sales_data{
Sales_data(const string &s, unsigned n, double p):
bookNo(s), units_sold(n), price(p), revenue(p * n) {}
Sales_data(): Sales_data("", 0, 0) {}
Sales_data(string s): Sales_data(s, 0, 0) {}
friend istream &operator>>(istream &, Sales_data &);
friend ostream &operator<<(ostream &, const Sales_data &);
Sales_data& operator+(const Sales_data &, const Sales_data &);
Sales_data& operator+= (const Sales_data &);
string isbn() const;
Sales_data& combine(const Sales_data&);
double avg_price() const;
string bookNo;
unsigned units_sold = 0;
double price = 0.0;
double revenue = 0.0;
};
Sales_data& Sales_data::operator+(const Sales_data &lhs, const Sales_data &rhs){
units_sold = lhs.units_sold + rhs.units_sold;
revenue = lhs.revenue + rhs.revenue;
return *this;
}
Sales_data& Sales_data::operator+=(const Sales_data &rhs){
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}