C++ primer(第五版) 练习 7.11 个人 code
来源:互联网 发布:java中的引用 编辑:程序博客网 时间:2024/06/05 11:31
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对象的值输出到ostreamistream &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;elsereturn 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;}
执行结果:
0 0
- C++ primer(第五版) 练习 7.11 个人 code
- C++ primer(第五版) 练习 3.17 个人code
- C++ primer(第五版) 练习 3.10 个人code
- C++ primer(第五版) 练习 3.20 个人code
- C++ primer(第五版) 练习 3.21 个人code
- C++ primer(第五版) 练习 3.22 个人code
- C++ primer(第五版) 练习 3.23 个人code
- C++ primer(第五版) 练习 3.24 个人code
- C++ primer(第五版) 练习 3.31 个人code
- C++ primer(第五版) 练习 3.32 个人code
- C++ primer(第五版) 练习 3.35 个人code
- C++ primer(第五版) 练习 3.36 个人code
- C++ primer(第五版) 练习 3.39 个人code
- C++ primer(第五版) 练习 3.40 个人code
- C++ primer(第五版) 练习 3.41 个人code
- C++ primer(第五版) 练习 3.42 个人code
- C++ primer(第五版) 练习 3.43 个人code
- C++ primer(第五版) 练习 3.44 个人code
- Unix动态库(.so)搜索路径
- HDU4521:小明系列问题——小明序列(推广LIS(带区间))
- iOS屏幕旋转学习笔记
- 笨方法学python(6)加分题--列表与字典的区别
- UVA 12657 - Boxes in a Line
- C++ primer(第五版) 练习 7.11 个人 code
- ssh框架Junit测试DAO
- 没有意义的代码书写
- “凡事无绝对”这话错在哪里?
- vlc在windows下的开发使用
- msdn之断言篇
- 【最短路径】hdu 3790
- eclipse 添加dtd
- java内部类