C++ Primer 第七章答案

题目中所要求的所有类的要求如下:

 

Person.h 

#ifndef _PERSON_H
#define _PERSON_H

#include <iostream>
#include <string>



class Person
{
public:
	Person(std::string name, std::string address) : name(name), address(address) {};
	~Person() {};
	std::string nameInfo() { return name; }
	std::string addressInfo() { return address; }
public:
	std::string name;
	std::string address;

};

std::istream &recordInfno(std::istream&, Person&);
std::ostream &outputInfno(std::ostream&,const Person&);
    
#endif

Person.c

#include "Person.h"

using namespace std;

std::istream &recordInfno(std::istream& is, Person& personInfo)
{
	is >> personInfo.name >> personInfo.address;
	return is;
}
std::ostream &outputInfno(std::ostream& os,const Person& personInfo)
{
	os << personInfo.name << " " << personInfo.address << endl;
	return os;
}



Sales_data.h

#ifndef _SALES_DATA_H
#define _SALES_DATA_H

#include <string>
/*
定义一个实现书店交易的类
它要实现表示一本书的总销售额、售出册数、平均售价
那么要是实现这个类,得先定义其数据成员,然后是类所能提供得接口(实现类所需要的操作)
然后开始实现接口
*/

class Sales_data
{
public:
	Sales_data(std::string number) :bookNo(number), units_sold(0), revenue(0.0){};
	Sales_data(std::istream &is) { read(is, *this); };
    Sales_data() {};
	~Sales_data() {};
	std::string isbn() const { return bookNo; }//返回ISBN编号
	Sales_data& combine(const Sales_data &);     //将一个Sales_date对象加到另一个对象上去
	double avg_price() const; //计算均价
private:
	std::string bookNo;     //ISBN编号
	unsigned units_sold ;//销售数量
	double revenue ;   //销售总额

	friend Sales_data add(const Sales_data&, const Sales_data&); //执行两个Sales_date对象的加法
	friend std::ostream &print(std::ostream&, const Sales_data&);//将Sales_date对象输出到ostream上
	friend std::istream &read(std::istream&, Sales_data&); //从ostream上读入到Sales_date对象
};


//Sale_date 的非成员接口函数
Sales_data add(const Sales_data&, const Sales_data&); //执行两个Sales_date对象的加法
std::ostream &print(std::ostream&, const Sales_data&);//将Sales_date对象输出到ostream上
std::istream &read(std::istream&, Sales_data&); //从ostream上读入到Sales_date对象

#endif

 Sales_data.c

#include "Sales_data.h"
#inclu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值