c++第六次实验报告_第1页
c++第六次实验报告_第2页
c++第六次实验报告_第3页
c++第六次实验报告_第4页
c++第六次实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、实验目的理解运算符重载(非成员形式和成员形式)、学习重载几类运算符(+,=,!=,+,-,=等)。2、实验内容应用vc+6.0的构建一个复数类complex,试对下列几个运算符进行重载:+,=,!=,+,-,=,其中要求要有成员重载形式和友元重载形式,而且,+运算符要求实现先加和后加两种形式。该类定义原型说明:class complexpublic:complex(double r=0,double i=0);complex &operator +(complex &c);complex operator -(complex &c);complex operator *(complex &

2、c);friend complex operator /(complex &c1,complex &c2);friend int operator =(complex &c1,complex &c2);friend int operator !=(complex &c1,complex &c2);/friend complex operator+(complex &c);complex operator+();void disp();private:double real; double imag;3、概要设计(1)实现的功能:本次实验主要是运用运算符重载来重载基类运算符,其中要求要有成员重载

3、形式和友元重载形式。(2)构造函数及函数原型complex(double r=0,double i=0);/构造函数complex &operator +(complex &c);/重载+函数complex operator -(complex &c);/重载-函数complex operator *(complex &c);/重载*函数friend complex operator /(complex &c1,complex &c2);/友元重载/函数friend int operator =(complex &c1,complex &c2);/友元重载=函数friend int opera

4、tor !=(complex &c1,complex &c2);/友元重载!=函数complex operator +();/重载先+函数complex operator +(int);/重载后+函数void disp();/输出函数4、详细设计1、complex:complex(double r,double i) real=r;imag=i;/构造函数,完成对变量的初始化2、complex &complex:operator +(complex &c) complex temp;temp.real=real+c.real;temp.imag=imag+c.imag;return temp;

5、/重载+函数3、complex complex:operator -(complex &c)complex temp; temp.real=real-c.real;temp.imag=imag-c.imag;return temp;/重载-函数4、complex complex:operator *(complex &c)complex temp;temp.real=real*c.real-imag*c.imag;temp.imag=real*c.imag+imag*c.real;return temp;/重载*函数5、complex operator /(complex &c1,comple

6、x &c2)complex temp;double t;t=1/(c2.real*c2.real+c2.imag*c2.imag);temp.real=(c1.real*c2.real+c1.imag*c2.imag)*t;temp.imag=(c2.real*c1.imag-c1.real*c2.imag)*t;return temp;/重载/函数6、int operator =(complex &c1,complex &c2)if(c1.real=c2.real&c1.imag=c2.imag)return true;elsereturn false;/重载=函数7、int operato

7、r!=(complex &c1,complex &c2)if(c1.real!=c2.real|c1.imag!=c2.imag)return true;elsereturn false;/重载!=函数8、complex complex:operator+()+real;+imag;return *this;/重载先+函数9、complex complex:operator+(int)real+;imag+;return *this;/重载后+函数10、void complex:disp()cout0)cout+;if(imag!=0)coutimagin;/输出函数 5、程序调试在整个程序的

8、调试和运行中,没有出现一些语法上的错误,就是有一些逻辑上的错误,主要是在怎样在主函数中通过输入语句输入要用的测试值的问题,但后来通过修改已经没有问题了。下面是程序测试的数据及结果:测试的结果为: 6、实验总结通过这次试验,对运算符重载的认识更一步加深了,对它的使用也进一步熟悉了,使自己在以后的实验中可以更好的使用它们来解决一些问题。但还是在本次试验中找到了自己的不足,自己不能很好的记住一些关于它们的基本知识,如一些它们常用的形式和规则,这需在日后加强。 7、附录#includeusing namespace std;class complexpublic:complex(double r=0,

9、double i=0);/构造函数complex &operator +(complex &c);/重载+函数complex operator -(complex &c);/重载-函数complex operator *(complex &c);/重载*函数friend complex operator /(complex &c1,complex &c2);/友元重载/函数friend int operator =(complex &c1,complex &c2);/友元重载=函数friend int operator !=(complex &c1,complex &c2);/友元重载!=函数

10、complex operator +();/重载先+函数complex operator +(int);/重载后+函数void disp();/输出函数private:double real; double imag;complex:complex(double r,double i) real=r;imag=i;/构造函数,完成对变量的初始化complex &complex:operator +(complex &c) complex temp;temp.real=real+c.real;temp.imag=imag+c.imag;return temp;/重载+函数complex comp

11、lex:operator -(complex &c)complex temp; temp.real=real-c.real;temp.imag=imag-c.imag;return temp;/重载-函数complex complex:operator *(complex &c)complex temp;temp.real=real*c.real-imag*c.imag;temp.imag=real*c.imag+imag*c.real;return temp;/重载*函数complex operator /(complex &c1,complex &c2)complex temp;doubl

12、e t;t=1/(c2.real*c2.real+c2.imag*c2.imag);temp.real=(c1.real*c2.real+c1.imag*c2.imag)*t;temp.imag=(c2.real*c1.imag-c1.real*c2.imag)*t;return temp;/重载/函数int operator =(complex &c1,complex &c2)if(c1.real=c2.real&c1.imag=c2.imag)return true;elsereturn false;/重载=函数int operator!=(complex &c1,complex &c2)

13、if(c1.real!=c2.real|c1.imag!=c2.imag)return true;elsereturn false;/重载!=函数complex complex:operator+()+real;+imag;return *this;/重载先+函数complex complex:operator+(int)real+;imag+;return *this;/重载后+函数void complex:disp()cout0)cout+;if(imag!=0)coutimagin;/输出函数int main()complex a1(2.3,4.6),a2(3.6,2.8),a3,a4,a5,a6,a7,a8,a9,a10;a3=a1+a2;a4=a1-a2;cout-两个复数分别是-endl; a1.disp();a2.disp();cout-两个复数和为-endl;a3.disp();cout-两个复数差为-endl;a4.disp();a5=a1*a2;cout-两个复数乘积为-endl;a5.disp()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论