C++ primer plus Sales_item.h源码
2015-11-09 21:49
627 查看
Sales_item.h代码块
#ifndef SALESITEM_H #define SALESITEM_H #include <iostream> #include <string> class Sales_item { public: Sales_item(const std::string &book):isbn(book),units_sold(0),revenue(0.0){} Sales_item(std::istream &is){ is >> *this;} friend std::istream& operator>>(std::istream &,Sales_item &); friend std::ostream& operator<<(std::ostream &,const Sales_item &); public: Sales_item & operator+=(const Sales_item&); public: double avg_price() const; bool same_isbn(const Sales_item &rhs)const { return isbn == rhs.isbn; } Sales_item():units_sold(0),revenue(0.0){} public: std::string isbn; unsigned units_sold; double revenue; }; using std::istream; using std::ostream; Sales_item operator+(const Sales_item &,const Sales_item &); inline bool operator==(const Sales_item &lhs,const Sales_item &rhs) { return lhs.units_sold == rhs.units_sold && lhs.revenue == rhs.revenue && lhs.same_isbn(rhs); } inline bool operator!=(const Sales_item &lhs,const Sales_item &rhs) { return !(lhs == rhs); } inline Sales_item & Sales_item::operator +=(const Sales_item &rhs) { units_sold += rhs.units_sold; revenue += rhs.revenue; return *this; } inline Sales_item operator+(const Sales_item &lhs,const Sales_item &rhs) { Sales_item ret(lhs); ret += rhs; return ret; } inline istream& operator>>(istream &in,Sales_item &s) { double price; in >> s.isbn >> s.units_sold >> price; if(in) s.revenue = s.units_sold * price; else s = Sales_item(); return in; } inline ostream& operator<<(ostream &out,const Sales_item &s) { out << s.isbn << "\t" <<s.units_sold << "\t" << s.revenue << "\t" << s.avg_price(); return out; } inline double Sales_item::avg_price() const { if(units_sold) return revenue/units_sold; else return 0; } #endif
main.cpp代码块
#include <iostream> #include "Sales_item.h" int main(void) { Sales_item book; //read ISBN, number of copies sold, and sales price std::cin >> book; //write ISBN, number of copies sold, //total revenue, and average price std::cout << book << std::endl; return 0; }
运行代码如下
运行结果说明:
第一行需要用户输入:
0-201-70353-X 4 23.99
表示书的编号是0-201-70353-X
卖出书的总数是4本
每本书的价格是23.99
下面一行是根据上一行用户输入信息计算输出的结果:
95.96是4本书的总价格,其他信息和上面相同
相关文章推荐
- 关于c++顺序容器小结(二)---基本操作
- 3.c/c++程序员面试宝典-变量
- DOxygen for C++使用说明——注释代码二
- C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
- c++用gsoap调用webservice备忘
- Visual Studio 2010中C++项目升级指南
- vc++从txt文件中读取数据
- c++中虚函数和纯虚函数定义
- c语言中的各种printf
- DOxygen for C++使用说明——Markdown支持
- 【黑马程序员】 我的C语言学习笔记(1)数据类型
- 排序算法之冒泡排序
- C++设计模式[八]装饰模式
- C++学习——父类指针和子类指针的步长问题
- C++学习路线
- c与c++中enum和struct定义的区别
- C++学习——多态原理
- C语言笔记(结构体与offsetof、container_of之前的关系)
- 栈在程序中的作用(ARM结构)
- NOJ 5538 c语言