zoukankan      html  css  js  c++  java
  • C++primer书店程序

    #include <iostream>
    #include <string>
    #include <cassert>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    class Sales_data
    {
        friend std::istream& operator>>(std::istream&, Sales_data&);
        friend std::ostream& operator<<(std::ostream&, const Sales_data&);
        friend Sales_data operator+(const Sales_data&,const Sales_data&);//非成员函数(对称性)
        friend bool operator==(const Sales_data&,const Sales_data&);
        friend bool operator!=(const Sales_data&,const Sales_data&);
        
    public:
        Sales_data():units_sold(0),revenue(0.0){}
        Sales_data(const std::string &s):bookNo(s),units_sold(0),revenue(0.0){}
        Sales_data(const std::string &s,unsigned n,double p):bookNo(s),units_sold(n),revenue(n*p){}
        Sales_data(std::istream &is);
    
        Sales_data& operator+=(const Sales_data&);//成员函数(复合赋值通常是成员函数)
        std::string isbn()const{return bookNo;}
    
        Sales_data& operator=(const std::string &s);
    private:
        inline double avg_price()const;//inline
    private:
        std::string bookNo; //isbn
        unsigned units_sold;//销售量
        double revenue;     //总价
    };
    
    inline double Sales_data::avg_price() const
    {
        return units_sold ?

    revenue/units_sold : 0; } Sales_data::Sales_data(std::istream &is) { is>>*this; } std::istream& operator>>(std::istream& is,Sales_data& item) { double price=0.0; is>>item.bookNo>>item.units_sold>>price; if(is)//检測流的状态,输入易错且改写对象数据 item.revenue=item.units_sold*price; else item=Sales_data(); return is; } std::ostream& operator<<(std::ostream& os, const Sales_data& item) { os<<item.isbn()<<" "<<item.units_sold<<" " <<item.revenue<<" "<<item.avg_price(); return os; } Sales_data operator+(const Sales_data& item1,const Sales_data& item2) { Sales_data s(item1); s+=item2;//调用复合赋值 return s; } Sales_data& Sales_data::operator+=(const Sales_data& rhs) { units_sold+=rhs.units_sold; revenue+=rhs.revenue; return *this; } bool operator==(const Sales_data& lhs,const Sales_data& rhs) { return lhs.bookNo==rhs.bookNo && lhs.units_sold==rhs.units_sold && lhs.revenue==rhs.revenue; } bool operator!=(const Sales_data& lhs,const Sales_data& rhs) { return !(lhs==rhs); } Sales_data& Sales_data::operator=(const std::string &s) { *this=Sales_data(s); return *this; }


  • 相关阅读:
    Token验证(JWT)JwtUtil工具类 (2)
    iOS UIScrollView基本用法和代理方法
    iOS UIButton左文字右图片,上图片下文字
    iOS-源代码管理工具(SVN)
    iOS-源代码管理工具(Git)
    ios 状态栏statusBar的背景颜色
    iOS 开发中常用的排序(冒泡、选择、快速、插入、希尔、归并、基数)算法
    iOS开发设置View某个角为圆角
    [已解决]Xcode编译项目最后失败:Error: Jar file buglySymboliOS.jar was not found. Please copy the jar file into ~/bin folder
    TableView滚动、自动收起键盘
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7063977.html
Copyright © 2011-2022 走看看