C++ Primer 第4版中的Sales_item.h源码
2015-03-19 23:19
183 查看
转载地址:C++ Primer 第四版
Sales_item.h文件源码如下:
下面, 我们做一个简单的测试:
x 1 5 x 3 4
x 4 17 4.25
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
下面, 我们做一个简单的测试:
#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; } int main() { Sales_item item1, item2; std::cin >> item1 >> item2; // read a pair of transactions std::cout << item1 + item2 << std::endl; // print their sum return 0; }输入 x 1 5 x 3 4 并按enter, 结果如下:
x 1 5 x 3 4
x 4 17 4.25
相关文章推荐
- C++ Primer 第五版第一章Sales_item.h源码
- [C++ Primer 第4版]第2章 变量和基本类型
- C++ Primer(第4版)-学习笔记-第4部分:面向对象编程与泛型编程
- 【c++ primer, 5e】设计Sales_data类 & 定义改进的Sales_data类
- [C++学习] C++ Primer 第4版 习题4.18
- [C++ Primer 第4版]第3章 标准库类型
- C++ Primer(第4版)-学习笔记-第5部分:高级主题
- 强烈推荐C++ Primer 习题解答(第4版)
- C++ Primer(第4版)-第1部分:基本语言——学习笔记
- C++ Primer中Sales_item.h代码解析
- 强烈推荐C++ Primer 习题解答(第4版)
- [C++ 学习] C++ primer 第4版 习题4.19
- Sales_item.h (C++ Primer 第五版)
- C++ Primer(第4版)-第2部分:容器和算法——学习笔记
- c++ primer中定义sales_data类,整个书店程序如下
- C++ Primer 第4版 9.12
- [c++学习] C++ primer 第4版 习题4.20 4.21 常量指针 和 指针常量
- C++ Primer 中的Sales_item类
- C++ Primer(第4版)-第3部分:类和数据抽象——学习笔记
- [C++学习] c++ primer 第4版 习题3.14