C++Primer 第14章-重载操作符与转换-课后习题答案 .pdfVIP

C++Primer 第14章-重载操作符与转换-课后习题答案 .pdf

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十四章 重载操作符与转换 1。在什么情况下重载操作符与内置操作符不同?在什么情况下重载操作符与内置操作符相 同? 重载操作符必须具有至少一个类类型或枚举类型的操作数。重载操作符不保证操作数的求值 顺序,例如对 && 和 || 的重载版本不再具有“短路求值”的特性,两个操作数都要进行 求值,而且不规定操作数的求值顺序。 对于优先级和结合性及操作数的数目都不变。 2 。为Sales_item 编写输入、输出。加以及复合赋值操作符的重载声明。 class Sales_item { friend std::istream& operator >> ( std::istream&, Sales_item& ); friend std::ostream& operator <<(std::ostream&, const Sales_item&); public: Sales_item& operator += ( const Sales_item& ); }; Sales_item operator+ ( const Sales_item&, const Sales_item& ) 3 。解释如下程序,假定Sales_item 构造函数的参数是一个string,且不为explicit.解释如果构 造函数为explicit 会怎样。 string null_book = “0-000-00000-0”; Sales_item item(cin); item += null_book; 第一句:调用接受一个C 风格的字符串形参的string 构造函数,创建一个string 临时对象, 然后使用string 复制构造函数用这个临时对象初始化string 对象null_book, 第二句:从标准输入设备读入数据,创建Sales_item 对象item。 第三句:首先调用接受一个string 参数的Sales_item 构造函数,创建一个临时对象,然后调 用Sales_item 的复合重载操作符+=,将这个Sales_item 临时对象加到item 对象上, 如果构造函数为explicit,则不能进行从string 对象到Sales_item 对象的隐式转换,第三句将 不能被编译。 4 。string 和 vector 类都定义了一个重载的==,可用于比较这些类的对象,指出下面的表达 式中应用了哪个==版本。 string s; vector<string> svec1, svec2; “cobble” == “store” 应用了C++语言内置版本的重载== svec1[0] == svec2[0]; 应用了string 版本的重载== svec1 == svec2 应用了vector 版本的重载== 5 。列出必须定义为类成员的操作符。 赋值 = , 下标[] , 调用 () ,成员访问箭头 -> 6 。解释下面操作符是否应该为类成员,为什么? (a )+ (b) += (c)++ (d) -> (e) << (f) && (g) == (h) ( ) +, <<, == ,&& 通常定义为非成员;->和()必须定义为成员,否则会出现编译错误;+= 和 ++ 会改变对象的状态,通常会定义为类成员。 7 。为下面的ChecoutRecord 类定义一个输出操作符: class CheckoutRecord { public: // .. private: double book_id; string title; Date date_borrowed; Date date_due; pair<string,string> borrower; vector< pair<string, string>* > wait_list; }; ostream& operator << (ostream& out, const CheckoutRecord& s) { out << s.book_id << "\t" << s.title<< "\t" << s.date_borrowed<< "\t" << s.date_due <<

文档评论(0)

1637142147337d1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档