• C++primer 第一章网站上的代码


    <pre name="code" class="cpp">C++primer 第一章网站上的代码:
    #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


    
        
    
    
  • 相关阅读:
    【分布式事务】的一篇良心之作!
    如何保证缓存与数据库的数据一致性
    30多岁的大龄程序员,应该如何保持职场竞争力
    Kafka acks参数对消息持久化的影响
    Kafka 如何优化内存缓冲机制造成的频繁 GC 问题?
    Shell中的特殊符号(special characters)和含义
    Bash中的一些常用的数组相关的特殊语法(array syntax)
    一站式搞定Bash脚本的参数处理问题
    Bash脚本set命令教程
    Bash中的eval命令
  • 原文地址:https://www.cnblogs.com/yangquanhui/p/4937510.html
Copyright © 2020-2023  润新知