设计 Sales_data 类
Sales_data 的接口应该包含以下操作:
- 一个 isbn 成员函数,用于返回对象的 ISBN 编号
- 一个 combine 成员函数,用于将一个 Sales_data 对象加到另一个对象上
- 一个名为 add 的函数,执行两个 Sales_data 对象的加法
- 一个 read 函数,将数据从 istream 读入到 Sales_data 对象中
- 一个 print 函数,将 Sales_data 对象的值输出到 ostream
使用改进的 Sales_data 类
不再使用 Sales_item 对象,而是使用 Sales_data 对象:
Sales_data total;//保存当前求和结果的变量 if(read(cin,total)){//读入第一笔交易 Sale_data trans;//保存下一条交易数据的变量 while (read(cin,trains))//读入剩余交易 { if(total.isbon()==trains.isbn())//检查isbn total.combine(trans);//更新变量total当前的值 else { print(cout,total)<<endl;//输出结果 total=trans;//处理下一本书 } } print(cout,total)<<endl;//输出最后一条交易 }else//没有输入任何信息 { cerr<<"No data?!"<<endl;//通知用户 }
定义改进的 Sales_data 类
struct Sales_data { //新成员:关于Sales_data对象的操作 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 add(const Sales_data&,const Sales_data&); ostream &print(ostream&,const Sales_data&); istream &read(istream&,Sales_data&);
Note:定义在类内部的函数是隐式地 inline 函数。

浙公网安备 33010602011771号