Exp10实验报告.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多
Exp10实验报告

一、 实验内容:用友元函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。 例子:运算符重载为友元函数举例 #includeiostream using namespace std; class complex //复数类定义 { public: complex(double r=0.0,double i=0.0) {real=r;imag=i;} friend complex operator + (complex c1,complex c2); //运算符+重载友元函数 friend complex operator - (complex c1,complex c2); //运算符-重载友元函数 void display(); private: double real; double imag; }; complex operator + (complex c1,complex c2) //运算符重载友元函数实现 { return complex(c1.real+c2.real,c1.imag+c2.imag); } complex operator - (complex c1,complex c2) //运算符重载友元函数实现 { return complex(c1.real-c2.real,c1.imag-c2.imag); } void complex::display() { cout(real,imag)endl; } int main() { complex c1(5,4),c2(2,10),c3; coutc1=; c1.display(); coutc2=; c2.display(); c3=c1-c2; //使用重载运算符完成复数减法 coutc3=c1-c2=; c3.display(); c3=c1+c2; //使用重载运算符完成复数加法 coutc3=c1+c2=; c3.display(); } 这个是VC6.0的一个BUG。不要用using namespace std; 改成 using std::cout; using std::endl;就可以了,与程序本身没有关系。 3)编译程序没有错误,但是linking时有错误!! 通过请教同学后发现了错误:这只是无参构造函数的声明,但还没有定义。应该改成“Fenshu(){};” 如果直接调用对象的数据成员会报错, 只有当把所要访问的数据成员设成public 型时,才不会报错: 但是当数据成员是private数据类型时,可以定义一个成员函数来访问, 然后对象再调用display()函数即可。 之前结果一直错误,,后来检查好几遍之后才发现是传参错误。。。。 约分函数,刚开始时没有加等于号,致使绝大多数的测试结果正确,但是当测试 “0 2 2 4”时不能约分。 7)“operator = must be a Unknown member” 原因:赋值号“=”不能用友元函数重载,只能重载成某类中的成员函数。 约分函数写的有问题,可以想象得到,当a%i==0符合,而b%i==0不符合时,即为死循环。改进方法为:1)再在while语句中加一个”else break;”2)或者,把while语句写成“while((a%i==0)(b%i==0))” 9)刚开始时,没有写这两句,导致 导致结果: 错误结果分析:上述“F3=F1.operator=(F4);”执行了两次“=”语句,即(F3.operator=(F1.operator=(F4));它与F3=F1=F4不等,实际是F3=F1;) 首先是F1操作对象F4,然后得到还是F4,再F3操作的也是F4,所以F3与F4不相等。 改正: 法1) 法2) I 二、 实验要求:重载下标运算符使之返回集合中最大的元素、次最大的元素以及第三大的元素。 SRC:见Exp10.2.cpp 实验小结: 1)fatal error C1033: cannot open program database 解决的方法有多种: 把文件路径都改成英文就行了。 再次改成Disable(Debug)重新编译则成功要想弄明白出现问题的原因还是先了解一下pch文件吧,参考一下资料:

文档评论(0)

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

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

1亿VIP精品文档

相关文档