C++ Primer复习和学习笔记 第七章 函数

本文详细介绍了如何使用C++编程语言自定义Sales_item类,实现交易的输入、输出以及平均价格的计算功能。通过引入成员函数和类的继承,展示了在类外定义非内联函数的方法,以及如何解决第一章给出的平均价格问题。






#ifndef _SALES_ITEM_
#define _SALES_ITEM_
#include "iostream"
/*编写你自己的 Sales_item 类,添加两个公用(public)成员用于读和写 Sales_item 对象。这两个成员函数的功
能应类似于第一章介绍的输入输出操作符。交易也应类似于那一章所定义的。利用这个类读入并输出一组交易。 

编写一个头文件,包含你自己的 Sales_item 类。使用通用的 C++ 规则给这个头文件以及任何相关的文件命名,
这些文件用于存储在类外定义的非内联函数。 
	
在 Sales_item 类中加入一个成员,用于添加两个Sales_item 对象。使用修改后的类重新解决第一章给出的平均价格问题。 
*/
#include "string"             ----------------------------Sale_item.h

class Sales_item
{
private:
	std::string isbn;
	unsigned units_sold;
	double revenue;
public:
	std::istream & inPut(std::istream & in);//这个函数用来进行输入。
	std::ostream & outPut(std::ostream & out)const;//这个函数用来进行输出。
	double avg_price()const;//这个函数用来计算平均价格。
	bool same_isbn(const Sales_item & rhs)const//这个函数用来判断两对象是否相等。
	{
		return isbn==rhs.isbn;
	}
	Sales_item::Sales_item():units_sold(0),revenue(0.0){}
};

#endif

#include "Sale_item.h"------------------------------------------------------Sale_item.cpp
std::istream & Sales_item::inPut(std::istream & in)//这个函数用来进行输入。
{
	double price;
	in>>isbn>>units_sold>>price;
	//检查是否读入成功
	if (in)
	{
		revenue = units_sold * price;
	} 
	else
	{
		units_sold  = 0;
		revenue = 0.0;
	}
	return in;
}
std::ostream & Sales_item::outPut(std::ostream & out) const//这个函数用来进行输出。
{
	out<<isbn<<"\t"<<units_sold<<"\t"<<revenue<<"\t"<<avg_price();
	return out;
}
double Sales_item::avg_price()const//这个函数用来计算平均价格。
{
	if(units_sold)
		return revenue/units_sold;
	else
		return 0;
}

#include "Sale_item.h"-----------------------------main.cpp
#include "iostream"

using namespace std;

int main()
{
	Sales_item item;
    //读入并且输出一组交易
	cout<<"Enter some transactions(Ctrl+z  to end):"<<endl;
	while (item.inPut(cin))
	{
		cout<<"The transaction readed is :"<<endl;
		item.outPut(cout);
		cout<<endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值