c++primer第七章函数7.31

本文详细探讨了C++中的函数使用,包括函数重载、默认参数、引用参数、函数模板等内容,深入解析了函数在C++编程中的应用和高级特性。
习题7.31 
编写你自己的Sales_item类,添加两个公用(public)成员用于读和写Sales_item对象。这两个成员函数的功能应类似于第1章介绍的输入输出操作符。交易也应类似于那一章所定义的。利用这个类读入并交易输出一组交易。
习题7.33 在Sales_item类中加入一个成员,用于将两个Sales_item对象相加。使用修改后的类重新解决第1章给出的平均价格问题。


#ifndef SALESITEM_H
#define SALESITEM_H

#include <iostream>
#include <string>

class Sales_item {
public:
    //构造函数
    Sales_item() :units_sold(0), revenue(0.0){}
    Sales_item(const std::string &book) :isbn(book), units_sold(0), revenue(0.0){}
    //成员函数
    inline std::istream& In(std::istream&);
    inline std::ostream& Out(std::ostream&) const;
    bool same_isbn(const Sales_item &rhs){ return isbn == rhs.isbn; }
    double avg_price() const;
    //喵
    Sales_item plus(Sales_item &it1, Sales_item &it2);
private:
    std::string isbn;
    unsigned units_sold;
    double revenue;
};

double Sales_item::avg_price() const
{
    if (units_sold)
        return revenue / units_sold;
    else
        return 0;
}
std::istream& Sales_item::In(std::istream &in)
{
    double price;
    std::cin >> isbn >> units_sold >> price;
    revenue = units_sold * price;
    return in;
}
std::ostream& Sales_item::Out(std::ostream &out) const
{
    std::cout << isbn << " " << units_sold << '\t'
        << revenue << '\t' << avg_price() << std::endl;
    return out;
}
Sales_item Sales_item::plus(Sales_item &it1, Sales_item &it2)
{
    isbn = it1.isbn;
    revenue = it1.revenue + it2.revenue;
    units_sold = it1.units_sold + it2.units_sold;
    return *this;
}
#endif




#include <iostream>
#include <string>
#include
#include "Sales_item.h"
using namespace std;
int main()
{
    Sales_item item1, item2, item3;
    item1.In(cin);
    item2.In(cin);
    cout << endl;
    item1.Out(cout);
    item2.Out(cout);
    cout << endl;
    item3.plus(item1, item2);
    item3.Out(cout);
    system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值