设计 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 函数。

posted @ 2019-08-01 19:40  CodeWithMe  阅读(403)  评论(0)    收藏  举报