文件1:sales_item.h
内容:定义一个销售记录的虚基类
#ifndef SALESITEMS_H
#define SALESITEMS_H
#include <iostream>
#include <string>
using namespace std ;
// 定义一个销售记录的抽象类
class Sales_item
{
public:
// 默认构造函数
Sales_item() : sold_number(0), unit_price(0) , flag(0) //成员初始化列表
{
}
// 拷贝构造函数
Sales_item( const Sales_item& item ) ;
// 重载赋值运算符
Sales_item& operator = ( const Sales_item& ) ;
virtual double Gettotal_price() = 0 ; //纯虚函数定义 ,功能是返回这本书总共卖的钱
double aver_price() ;
public:
string isbn ; //这本书的ISBN
unsigned sold_number; //销售册数
double unit_price; //每册数的单价
double total_price ; //这本书总共卖的钱
int flag ;
} ;
#endif
文件2:sales_item.cpp
内容:头文件sales_items.h的实现文件
#include "sales_item.h"
double Sales_item::Gettotal_price()
{
return total_price ;
}
double Sales_item::aver_price()
{
return total_price / sold_number ;
}
Sales_item::Sales_item( const Sales_item& item )
{
isbn = item.isbn ;
sold_number = item.sold_number ;
total_price = item.total_price ;
unit_price = item.unit_price ;
}
Sales_item& Sales_item::operator = ( const Sales_item& item )
{
isbn = item.isbn ;
sold_number = item.sold_number ;
total_price = item.total_price ;
unit_price = item.unit_price ;
return *this ;
}
文件3:mySales_item.h
内容:继承自文件sales_item.h中的类
#ifndef MYSALESITEM_H
#define MYSALESITEM_H
#include "Sales_item.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std ;
class MySales_item ;
bool operator== ( const MySales_item & item1 , const MySales_item& item2 ) ;
bool operator == ( const MySales_item& item , const string& isbn ) ;
class MySales_item : public Sales_item
{
public:
MySales_item( int sold_number = 0 , int unit_price = 0 , int flag = 0 ) :
Sales_item()
{ } // 默认构造函数
MySales_item( const MySales_item & item ) ; // 拷贝构造函数
virtual double Gettotal_price() ; // 返回共卖的钱
friend bool operator== ( const MySales_item & item1 , const MySales_item& item2 ) ;
friend bool operator == ( const MySales_item& item , const string& isbn ) ;
MySales_item& operator= ( const MySales_item & item ) ;
MySales_item& operator+= ( MySales_item & item ) ;