实验9运算符重载().docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验9 运算符重载(1) 一、实验目的 1、掌握运算符重载的概念; 二、实验内容 1、用成员函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。要求: (1)输出结果是最简分数(可以是带分数); (2)分母为1,只输出分子。 过程分析: 1) 定义一个类Complex,在公共部分定义构造函数,输出函数,和运算符=、+、-、*、/的重载函数,此处运算符=可以使用系统默认的运算符=的函数。在私有部分定义两个数据成员x和y。 2) 定义构造函数时先在类里面声明构造函数,并对参数初始化,再在类外定义构造函数,分别给x和y初始化。 3) 定义输出函数print(),对分数进行化简,采用的方法是利用for循环,分子分母均除以i,i从2增加到分子分母中更小的一个数后截止,每次增加1,在利用if else语句,如果分子分母除以i均被整除,则说明这是的i是分子分母的公约数,分子分母均赋值为整除后的结果值,同时将i重新赋值为2,因为再求公约数是要再从i=2开始循环;否则i++,表示及进入下一个循环。化成最简形式后在利用if else语句,判断最终结果值的分母是否为1,如果不是,则输出分数,否则只输出分子。 4) 定义运算符+重载函数,参数作为+的右操作对象,调用函数的对象作为左操作对象,在函数里定义一个Complex对象d,将左右操作对象的分数相加,将得到的结果的分子和分母分别赋给d的分子和分母,返回类的对象d。 5) 定义运算符-重载函数,参数作为-的右操作对象,调用函数的对象作为左操作对象,在函数里定义一个Complex对象d,将左右操作对象的分数相减,并将得到的结果的分子和分母分别赋给d的分子和分母,返回类的对象d。 6) 定义运算符*重载函数,参数作为*的右操作对象,调用函数的对象作为左操作对象,在函数里定义一个Complex对象d,将左右操作对象的分数相乘,并将得到的结果的分子和分母分别赋给d的分子和分母,返回类的对象d。 7) 定义运算符/重载函数,参数作为/的右操作对象,调用函数的对象作为左操作对象,在函数里定义一个Complex对象d,将左右操作对象的分数相除,并将得到的结果的分子和分母分别赋给d的分子和分母,返回类的对象d。 8) 在主函数中定义Complex的两个对象A1和A2,并输入初始值得到两个分数对象,再定义对象A3,A4,A5,A6,A7,A3-A6分别赋予A1和A2相加、相减、相乘、相除的结果值,将A1赋给A7,最后分别调用输出函数print(),进行验证。 9) 将上述文字描述作为注释,写出所对应的程序 源程序: #includeiostream using namespace std; class Complex{ public: Complex(int a=0,int b=0); //构造函数 void print() //显示输出结果 { cout运算后的结果是:endl; int n=(xy)?y:x; for(int i=2;i=n;) { if(x%i==0y%i==0) { x=x/i;y=y/i; i=2; } else i++; } if(y!=1) coutx/yendl; else coutxendl; } Complex operator+(Complex c) //定义运算符+重载函数 { Complex d; d.x=x*c.y+c.x*y; d.y=y*c.y; return d; } Complex operator-(Complex c) //定义运算符-重载函数 { Complex d; d.x=x*c.y-c.x*y; d.y=y*c.y; return d; } Complex operator*(Complex c) //定义运算符*重载函数 { Complex d; d.x=x*c.x; d.y=y*c.y; return d; } Complex operator/(Complex c) //定义运算符/重载函数 { Complex d; d.x=x*c.y; d.y=y*c.x; return d; } private: int x; int y; }; Complex::Co

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档