频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
C++primer书店程序
2015-07-02 10:44:16         来源:借你一秒  
收藏   我要投稿
#include 
#include 
#include 
#include 
#include 
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<
点击复制链接 与好友分享!回本站首页
相关TAG标签 书店 程序
上一篇:从一个数组中随机的取出若干个不同的数
下一篇:LintCode 字符串查找
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站