C++ primer(第五版) 练习 7.11 个人 code
2014-08-13 23:24
127 查看
C++ primer(第五版) 练习 7.11
题目:在你的Sales_data 类中添加构造函数,然后编写一段程序令其用到每个构造函数。
答:
执行结果:
C++ primer(第五版) 练习 7.11
题目:在你的Sales_data 类中添加构造函数,然后编写一段程序令其用到每个构造函数。
答:
/* Sales_data.h 定义Sales_data类 相关成员函数和相关成员数据。 */ #include <iostream> #include <string> using std::ostream; using std::istream; using std::string; struct Sales_data { Sales_data() = default; // 默认构造函数 Sales_data(const string &s) :bookNo(s) // 只为bookNo初始化,其它成员让编译器赋默认值 { } Sales_data(const string &s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(p*n) // 全部成员都初始化 { } Sales_data(istream &); //从 istram中读取一条信息进行初始化 string isbn() const { return bookNo; } // 返回对象的ISNB编号 Sales_data & combine(const Sales_data&); // 将一个Sales_data对象加到另一个对象上 double avg_price() const; //售出书籍的平均价格 string bookNo; // ISBN编号 unsigned units_sold = 0; // 某本书的销量 double revenue = 0.0; //总销售收入 }; Sales_data add(const Sales_data&, const Sales_data&); //执行两个Sales_data对象的加法 ostream &print(ostream&, const Sales_data&); //将 Sales_data对象的值输出到ostream istream &read(istream&, Sales_data&); //将数据从 istream 读入到 Sales_data 对象中
/* Sales_data.cpp 定义Sales_data 成员函数 */ #include "Sales_data.h" Sales_data::Sales_data(istream &is) { read(is, *this); } double Sales_data::avg_price() const { if (units_sold) return revenue / units_sold; else return 0; } Sales_data& Sales_data::combine(const Sales_data &rhs) { units_sold += rhs.units_sold; revenue += rhs.revenue; return *this; } ostream &print(ostream &output, const Sales_data &item) { output << item.isbn() << " " << item.units_sold << " " << item.revenue << " " << item.avg_price(); return output; } istream &read(istream &input, Sales_data &item) { double price = 0; input >> item.bookNo >> item.units_sold >> price; item.revenue = price*item.units_sold; return input; } Sales_data add(const Sales_data &lhs, const Sales_data &rhs) { Sales_data sum = lhs; sum.combine(rhs); return sum; }
#include <iostream> #include "Sales_data.h" using std::cout; using std::cin; using std::endl; int main() { Sales_data mySales1, mySales2("0-201-78345-X"), mySales3("0-201-78345-X", 10, 23.5); print(cout, mySales1); cout << endl; print(cout, mySales2); cout << endl; print(cout, mySales3); cout << endl; return 0; }
执行结果:
相关文章推荐
- C++ primer 第五版 中文版 练习 10.13 个人code
- C++ primer 第五版 中文版 练习 10.31 个人code
- C++ primer 第五版 中文版 练习 11.12 个人code
- C++ primer 第五版 中文版 练习 12.19 个人code
- C++ Primer 第五版 中文版 练习 13.22 个人code
- C++ primer(第五版) 练习 3.31 个人code
- C++ primer(第五版) 练习 3.43 个人code
- C++ primer(第五版) 练习 7.15 个人 code
- C++ primer 第五版 中文版 练习 10.14 个人code
- C++ primer 第五版 中文版 练习 10.30 个人code
- C++ primer 第五版 中文版 练习 11.14 个人code
- C++ primer(第五版) 练习 3.17 个人code
- C++ primer(第五版) 练习 6.10 个人code
- C++ primer 第五版 中文版 练习 10.15 个人code
- C++ primer 第五版 中文版 练习 10.34 个人code
- C++ primer 第五版 中文版 练习 11.3 个人code
- C++ primer 第五版 中文版 11.3.1 节练习 个人code
- C++ primer(第五版) 练习 3.32 个人code
- C++ primer(第五版) 练习 5.3 个人code
- C++ primer(第五版) 练习 5.17 个人code