zoukankan      html  css  js  c++  java
  • C++Primer 中间Sales_items.h头文件

    #ifndef SALESITEM_H
    #define SALESITEM_H
    #include <iostream>
    #include <string>
    
    
    class Sales_item
    {
    public:
     Sales_item(const std::string &book):isbn(book),units_sold(0),revenue(0.0){}
     Sales_item(std::istream &is){ is >> *this;}
     friend std::istream& operator>>(std::istream &,Sales_item &);
     friend std::ostream& operator<<(std::ostream &,const Sales_item &);
    public:
     Sales_item & operator+=(const Sales_item&);
    public:
     double avg_price() const;
     bool same_isbn(const Sales_item &rhs)const
     {
      return isbn == rhs.isbn;
     }
     Sales_item():units_sold(0),revenue(0.0){}
    public:
     std::string isbn;
     unsigned units_sold;
     double revenue;
    };
    
    using std::istream;
    using std::ostream;
    Sales_item operator+(const Sales_item &,const Sales_item &);
    inline bool operator==(const Sales_item &lhs,const Sales_item &rhs)
    {
     return lhs.units_sold == rhs.units_sold && lhs.revenue == rhs.revenue && lhs.same_isbn(rhs);
    }
    inline bool operator!=(const Sales_item &lhs,const Sales_item &rhs)
    {
     return !(lhs == rhs);
    }
    
    inline Sales_item & Sales_item::operator +=(const Sales_item &rhs)
    {
     units_sold += rhs.units_sold;
     revenue += rhs.revenue;
     return *this;
    }
    inline Sales_item operator+(const Sales_item &lhs,const Sales_item &rhs)
    {
     Sales_item ret(lhs);
     ret += rhs;
     return ret;
    }
    inline istream& operator>>(istream &in,Sales_item &s)
    {
     double price;
     in >> s.isbn >> s.units_sold >> price;
     if(in)
      s.revenue = s.units_sold * price;
     else
      s = Sales_item();
     return in;
    }
    inline ostream& operator<<(ostream &out,const Sales_item &s)
    {
     out << s.isbn << "	" <<s.units_sold << "	" << s.revenue << "	" << s.avg_price();
     return out;
    }
    inline double Sales_item::avg_price() const
    {
     if(units_sold)
      return revenue/units_sold;
     else
      return 0;
    }
    #endif
    

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    学习练习 java输入输出流 练习题1
    学习总结 java Iterator迭代器练习
    学习总结 java 输入输出流
    学习记录 java 哈希
    学习记录 java 链表知识
    学习总结 java 异常
    学习练习 java 集合
    web压缩gzip响应
    web乱码问题
    web附件中文名
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4826893.html
Copyright © 2011-2022 走看看