#ifndef TOU_WEN_JIAN_7_H
#define TOU_WEN_JIAN_7_H
#include <iostream>
#include <string>
#include <typeinfo>
#include <vector>
#include <cctype>
#include <cstring>
#include <iterator>
#include <stdexcept>
#include <initializer_list>
#include <cassert>
using std::cin;
using std::noskipws;
using std::skipws;
using std::cout;
using std::cerr;
using std::endl;
using std::string;
using std::vector;
using std::initializer_list;
using std::begin;
using std::end;
using std::runtime_error;
using std::istream;
using std::ostream;
struct Sales_data;
istream &read(istream &is, Sales_data &item);
ostream &print(ostream &os, const Sales_data &item);
Sales_data add(const Sales_data &lhs, const Sales_data &rhs);
struct Sales_data{
Sales_data()=default;
Sales_data(const string &s):bookNo(s) {}
Sales_data(const string &s, unsigned n, double p):
bookNo(s), units_sold(n), revenue(p*n) {}
Sales_data(istream &is)
{
read(is, *this);
}
string isbn() const { return bookNo; }
Sales_data& combine(const Sales_data&);
double avg_price() const;
string bookNo;
unsigned units_sold=0;//销售数量
double revenue =0.0;//销售收入
};
Sales_data& Sales_data::combine(const Sales_data &rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
istream &read(istream &is, Sales_data &item)
{
double price=0;
is>>item.bookNo>>item.units_sold>>price;
item.revenue=item.units_sold * price;
return is;
}
ostream &print(ostream &os, const Sales_data &item)
{
os<<item.isbn()<<"\t"<<item.units_sold<<"\t"
<<item.revenue<<"\t\t"<<item.avg_price()<<endl;
return os;
}
//在类的外部定义成员函数
double Sales_data::avg_price() const
{
if(units_sold)
return revenue/units_sold;
else
return 0;
}
Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
Sales_data sum=lhs;
sum.combine(rhs);
return sum;
}
#endif
C++Primer第五版第七章练习TouWenJian_7.h
最新推荐文章于 2024-10-04 17:07:53 发布