版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年固安县带编教师招聘笔试备考试题及答案解析
- 2026年广东省苏教版八年级数学第8章二次函数习题集
- 2026年白河县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年肥东县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年辰溪县社区工作者招聘笔试备考试题及答案解析
- 室内PM设计课程设计
- 插床机构课程设计前言
- 拼音描红-声母韵母全
- 水利工程监理质量管理制度
- 通讯行业招投标典型案例分析范文
- 泸州兴泸水务集团营业员笔试题库
- 2026年国企党建考试核心知识点复习题及参考答案
- 广元市公开招募2026年养老服务管理专员政策性岗位工作人员的(67 )考试备考题库及答案详解
- 旁站监理工作监理实施细则
- 2026年江苏压力容器考试试题及答案
- (2026年)重症后管理专家共识应用经验分享学习与解读课件
- 上海八年级数学上册-一元二次方程的应用-实际问题(同步练习)
- 2026年全市统计基本单位名录库题库
- 大学新教师入职培训
- 科室内部投诉管理制度
- 羊水栓塞案例分析
评论
0/150
提交评论