当前位置: 首页 > news >正文

福永医院网站建设东莞网站建设 包装材料

福永医院网站建设,东莞网站建设 包装材料,鲜花网站开发毕业设计,河北手机网站制作企业文章目录练习7.411、头文件2、源文件3、主函数练习7.42练习7.43练习7.44练习7.45练习7.46练习7.47练习7.48练习7.49练习7.50练习7.41 使用委托构造函数重新编写你的Sales_data 类#xff0c;给每个构造函数体添加一条语句#xff0c;令其一旦执行就打印一条信息。用各种可能的… 文章目录练习7.411、头文件2、源文件3、主函数练习7.42练习7.43练习7.44练习7.45练习7.46练习7.47练习7.48练习7.49练习7.50练习7.41 使用委托构造函数重新编写你的Sales_data 类给每个构造函数体添加一条语句令其一旦执行就打印一条信息。用各种可能的方式分别创建 Sales_data 对象认真研究每次输出的信息直到你确实理解了委托构造函数的执行顺序。 1、头文件 #ifndef CP5_ex7_41_h #define CP5_ex7_41_h#include string #include iostreamclass Sales_data {friend std::istream read(std::istream is, Sales_data item);friend std::ostream print(std::ostream os, const Sales_data item);friend Sales_data add(const Sales_data lhs, const Sales_data rhs);public:Sales_data(const std::string s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(n*p){std::cout Sales_data(const std::string, unsigned, double) std::endl;}Sales_data() : Sales_data(, 0, 0.0f){std::cout Sales_data() std::endl;}Sales_data(const std::string s) : Sales_data(s, 0, 0.0f){std::cout Sales_data(const std::string) std::endl;}Sales_data(std::istream is);std::string isbn() const { return bookNo; }Sales_data combine(const Sales_data);private:inline double avg_price() const;private:std::string bookNo;unsigned units_sold 0;double revenue 0.0; };inline double Sales_data::avg_price() const {return units_sold ? revenue / units_sold : 0; }std::istream read(std::istream is, Sales_data item); std::ostream print(std::ostream os, const Sales_data item); Sales_data add(const Sales_data lhs, const Sales_data rhs);#endif2、源文件 #include exercise7_41.hSales_data::Sales_data(std::istream is) : Sales_data() {std::cout Sales_data(istream is) std::endl;read(is, *this); }Sales_data Sales_data::combine(const Sales_data rhs) {units_sold rhs.units_sold;revenue rhs.revenue;return *this; }std::istream read(std::istream is, Sales_data item) {double price 0;is item.bookNo item.units_sold price;item.revenue price * item.units_sold;return is; }std::ostream print(std::ostream os, const Sales_data item) {os item.isbn() item.units_sold item.revenue;return os; }Sales_data add(const Sales_data lhs, const Sales_data rhs) {Sales_data sum lhs;sum.combine(rhs);return sum; }3、主函数 #include exercise7_41.husing std::cout; using std::endl;int main() {cout 1. default way: endl;cout ---------------- endl;Sales_data s1;cout \n2. use std::string as parameter: endl;cout ---------------- endl;Sales_data s2(CPP-Primer-5th);cout \n3. complete parameters: endl;cout ---------------- endl;Sales_data s3(CPP-Primer-5th, 3, 25.8);cout \n4. use istream as parameter: endl;cout ---------------- endl;Sales_data s4(std::cin);return 0; }练习7.42 对于你在练习7.40中编写的类确定哪些构造函数可以使用委托。如果可以的话编写委托构造函数。如果不可以从抽象概念列表中重新选择一个你认为可以使用委托构造函数的为挑选出的这个概念编写类定义。 class Book { public:Book(unsigned isbn, std::string const name, std::string const author, std::string const pubdate):isbn_(isbn), name_(name), author_(author), pubdate_(pubdate){ }Book(unsigned isbn) : Book(isbn, , , ) {}explicit Book(std::istream in) { in isbn_ name_ author_ pubdate_;}private:unsigned isbn_;std::string name_;std::string author_;std::string pubdate_; };练习7.43 假定有一个名为 NoDefault 的类它有一个接受 int 的构造函数但是没有默认构造函数。定义类 CC 有一个 NoDefault 类型的成员定义C 的默认构造函数。 class NoDefault { public:NoDefault(int i) { } };class C { public:C() : def(0) { } private:NoDefault def; };练习7.44 下面这条声明合法吗如果不为什么 vectorNoDefault vec(10);不合法。因为 NoDefault 没有默认构造函数。 练习7.45 如果在上一个练习中定义的vector的元素类型是C则声明合法吗为什么 合法。因为 C 有默认构造函数。 练习7.46 下面哪些论断是不正确的为什么 (a) 一个类必须至少提供一个构造函数。 (b) 默认构造函数是参数列表为空的构造函数。 (c) 如果对于类来说不存在有意义的默认值则类不应该提供默认构造函数。 (d) 如果类没有定义默认构造函数则编译器将为其生成一个并把每个数据成员初始化成相应类型的默认值。(a) 不正确。如果我们的类没有显式地定义构造函数那么编译器就会为我们隐式地定义一个默认构造函数并称之为合成的默认构造函数。(b) 不完全正确。为每个参数都提供了默认值的构造函数也是默认构造函数。© 不正确。哪怕没有意义的值也需要初始化。(d) 不正确。只有当一个类没有定义任何构造函数的时候编译器才会生成一个默认构造函数。 练习7.47 说明接受一个string 参数的Sales_data构造函数是否应该是explicit的并解释这样做的优缺点。 是否需要从 string 到 Sales_data 的转换依赖于我们对用户使用该转换的看法。在此例中这种转换可能是对的。null_book 中的 string 可能表示了一个不存在的 ISBN 编号。 优点 可以抑制构造函数定义的隐式转换 缺点 为了转换要显式地使用构造函数 练习7.48 假定Sales_data 的构造函数不是explicit的则下述定义将执行什么样的操作 string null_isbn(9-999-9999-9); Sales_data item1(null_isbn); Sales_data item2(9-999-99999-9);这些定义和是不是 explicit 的无关。 练习7.49 对于combine 函数的三种不同声明当我们调用i.combine(s) 时分别发生什么情况其中 i 是一个 Sales_data而 s 是一个string对象。 (a) Sales_data combine(Sales_data); // ok (b) Sales_data combine(Sales_data); // error C2664: 无法将参数 1 从“std::string”转换为“Sales_data ” (c) Sales_data combine(const Sales_data) const; // 该成员函数是const 的意味着不能改变对象。而 combine函数的本意就是要改变对象练习7.50 确定在你的Person 类中是否有一些构造函数应该是 explicit 的。 explicit Person(std::istream is){ read(is, *this); }
http://www.w-s-a.com/news/547790/

相关文章:

  • 微信网站建设公司费用高端网站建设 炫酷
  • 北京网站假设销售找客户最好的app
  • 做外贸需要关注的网站有什么好处宜州设计公司
  • 公司最近想做个网站怎么办陕西科强建设工程有限公司官方网站
  • 生态城门户网站 建设动态it外包收费
  • 网站项目评价老渔哥网站建设公司
  • 哈尔滨寸金网站建设价格178软文网
  • 一个网站建设的成本网站开发过程及要点
  • 监控视频做直播网站中国建筑人才网下载
  • 网站建设公司华网天下买送活动集团网站设计案例
  • 哪些网站比较容易做哪个网站做中高端衣服
  • 做php网站教程wordpress去水印
  • 深圳微网站建设公司哪家好潍坊专业做网站的公司
  • 网站的弹窗广告怎么做软件开发包括
  • 网站开发人员保密做最优秀的自己演讲视频网站
  • 一般做网站要多少钱怎样选择高性价比的建站公司
  • 免费私人网站建设软件高端网站设计平台高端网站设计企业
  • 响应式网站建设的应用场景怎么申请电商平台
  • 怎么做垂直自营网站游戏咨询网站建设目标是什么
  • 建设网站需要给钱吗建立网站三大基础
  • 金融公司网站 htmlwordpress 防火墙
  • 重庆智能建站模板网站投票系统 js
  • 网站维护的内容和步骤网站做什么内容
  • 万网虚拟主机建网站wordpress协调世界时
  • 微网站建设方式应用大全网站
  • 网站速度测速织梦模板下载
  • 环保网站建设公司排名汉阴网站建设
  • 自己做网站的二维码wordpress用户权限在哪改
  • 网站使用说明书网站建设公司的介绍
  • 推广型网站免费建设网站防盗链设置