zoukankan      html  css  js  c++  java
  • Sales_item例子

    Sales_item.h

    #ifndef SALES_ITEM_H
    #define SALES_ITEM_H
    #include<iostream>
    #include<string>
    using namespace std;
    
    class Sales_item
    {
        friend ostream& operator<<(ostream &os,const Sales_item &);
        friend istream& operator>>(istream &is,Sales_item &);
    
       private:
            string bookno;
            unsigned units_sold=0;
            double revenue=0.0;
       public:
        string isbn()const
        {
            return this->bookno;
        }
        double avg_price() const;
        Sales_item& operator=(const Sales_item &);
        Sales_item& operator+(const Sales_item &);
        Sales_item& operator+=(const Sales_item &);
    };
    #endif // SALES_ITEM_H

    Sales_item.cpp

    #include "Sales_item.h"
    
    istream& operator>>(istream &in,Sales_item &s)
    {
        double price;
        in>>s.bookno>>s.units_sold>>price;
        if(in)
            s.revenue=s.units_sold*price;
        else
            s=Sales_item();
        return in;
    }
    
    ostream& operator<<(ostream &out,const Sales_item &s)
    {
        out<<s.isbn()<<" "<<s.units_sold<<" "<<s.revenue<<" "<<s.avg_price()<<endl;
        return out;
    }
    
    double Sales_item::avg_price() const
    {
        if(units_sold)
            return revenue/units_sold;
        else
            return 0;
    }
    
    Sales_item& Sales_item::operator=(const Sales_item &s)
    {
        units_sold=s.units_sold;
        revenue=s.revenue;
        isbn()=s.isbn();
        return *this;
    }
    Sales_item& Sales_item::operator+(const Sales_item &s)
    {
        if(this->isbn()==s.isbn())
        {
            units_sold+=s.units_sold;
            revenue+=s.revenue;
        }
        return *this;
    }
    
    Sales_item& Sales_item::operator+=(const Sales_item &s)
    {
        units_sold+=s.units_sold;
        revenue+=s.revenue;
        return *this;
    }

    useSales_item.cpp

    #include"Sales_item.h"
    
    int main()
    {
        Sales_item book;
        cin>>book;
        cout<<book<<endl;
        Sales_item item1,item2;
        cin>>item1>>item2;
        cout<<item1+item2<<endl;
        return 0;
    }

    运行结果如下:

  • 相关阅读:
    CG——Grab Cut
    asm2
    preinit_array
    tensorflow aot
    搭建elk
    Linux sed之正则表达式:sed替换字符串时,使用正则表达式的注意事项
    sed:在匹配模式的行首或者行尾插入字符
    logical exclusive 与 physical exclusive 的区别
    logical exclusive 与 physical exclusive 的区别
    ztSpyGlass工具介绍_focus357的博客-程序员宅基地
  • 原文地址:https://www.cnblogs.com/wuchanming/p/3879883.html
Copyright © 2011-2022 走看看