




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验7 运算符重载(1)实验目的:1、理解什么是运算符重载;2、熟悉运算符函数的声明、定义、调用;3、掌握使用类的成员函数重载运算符方法;4、掌握使用友元函数重载运算符方法;5、熟悉算术运算符、关系运算符的重载方法;6、了解CTime等MFC类中的运算符重载情况。实验内容 1、复数是大家中学时期就学过的知识,设 a+bi 和 c+di 是两个复数,则它们的四则运规则如下: 请按下列步骤操作,体会什么是运算符重载,理解实现运算符使用的两种基本方法:(1) 复制下列代码到开发工具并加以运行,观察整数的+、-运算是否成功?#include using namespace std;class Complexprivate:double real,image; /分别为实部、虚部public:Complex(double rel=0, double img=0)real=rel;image=img;void display()/输出(a+b*i) 、(a-b*i) 、(a)等形式cout (0) cout+image*i) ;/虚部为正else if (image0) coutimage*i) ;/虚部为负elsecout) ;/虚部为,即为实数/位置1;/位置2void main()int i1=100, i2=10, i3, i4;i3=i1+i2;i4=i1-i2;couti1+i2=i3endl;couti1-i2=i4endl;/位置3(2) 复制下列代码到 位置3 处,再次编译、运行程序,观察复数的+、-运算是否可行?从中得出什么结论?试说明其中的原因。Complex c1(1,2), c2(3,-4),c3,c4; c3=c1+c2;c4=c1-c2;/输出加的结果c1.display();cout+;c2.display();cout=;c3.display(); coutendl; /输出减的结果c1.display();cout-;c2.display();cout=;c4.display (); coutendl;(3) 分别复制下列两段代码到 位置1和 位置2 处,再次编译、运行程序,观察这次的复数+、-运算能否成功?再次得出什么结论?代码段1Complex operator +(Complex & c);/用成员函数重载friend Complex operator -(Complex & c1,Complex & c2);/用友元函数重载代码段2/成员函数的类外定义Complex Complex:operator +(Complex & c)Complex temp;temp.real=real+c.real;temp.image=image+c.image;return temp;/友元函数的定义Complex operator -(Complex & c1,Complex & c2)Complex temp;temp.real=c1.real-c2.real;temp.image=c1.image-c2.image;return temp;(4)分析上述代码,结合小课ppt理解运算符函数的声明、定义、调用,熟悉运算符重载的两种基本方法:使用类成员函数和友元函数,注意它们之间参数的差异。 2、参照上一题的程序,掌握用类成员函数重载运算符的方法要求:在程序的适当位置填写程序代码,使用成员函数方法实现下列运算符重载:(1) 复数 + 实数(double) 运算;(2) 复数 * 复数 运算。程序代码:#include using namespace std;class Complexprivate:double real,image; /分别为实部、虚部public:Complex(double rel=0, double img=0)real=rel;image=img;void display()/输出(a+b*i) 、(a-b*i) 、(a)等形式cout (0) cout+image*i) ;/虚部为正else if (image0) coutimage*i) ;/虚部为负elsecout) ;/虚部为,即为实数Complex operator +(Complex & c);/用成员函数重载;/成员函数的类外定义Complex Complex:operator +(Complex & c)Complex temp;temp.real=real+c.real;temp.image=image+c.image;return temp;void main()Complex c1(1,2), c2(3,-4),c3,c4;c3=c1+123.456;c4=c1*c2; /输出加的结果c1.display();cout+;cout123.456;cout=;c3.display(); coutendl; /输出*的结果c1.display();cout*;c2.display();cout=;c4.display (); coutendl;3、参照上两题的程序,掌握用友元函数重载运算符的方法要求:在程序的适当位置填写程序代码,使用友元函数方法实现下列运算符重载:(1) 复数 / 实数(double) 运算;(2) 复数 = 复数 运算; (结果:int型,1表示“true”,0表示“false”)(3) 复数 != 复数 运算。(结果:int型,1表示“true”,0表示“false”)程序代码:#include using namespace std;class Complexprivate:double real,image; /分别为实部、虚部public:Complex(double rel=0, double img=0)real=rel;image=img;void display()/输出(a+b*i) 、(a-b*i) 、(a)等形式cout (0) cout+image*i) ;/虚部为正else if (image0) coutimage*i) ;/虚部为负elsecout) ;/虚部为0,即为实数friend Complex operator -(Complex & c1,Complex & c2);/用友元函数重载;/友元函数的定义Complex operator -(Complex & c1,Complex & c2)Complex temp;temp.real=c1.real-c2.real;temp.image=c1.image-c2.image;return temp;void main()Complex c1(10,9), c2(3,-4),c3;c3=c1/5; /输出除的结果c1.display();cout/;cout5;cout=;c3.display(); coutendl; /输出比较的结果coutc1=c2 ? 结果:;cout(c1=c2)endl;coutc1!=c2 ? 结果:;cout(c1!=c2)endl;问题:能否不调用display()成员函数,而是采用cout方式连续输出Complex呢?4、书上P256:10.4.2的第(1)题。5、在大名鼎鼎的MFC类中,除了包含数据成员、成员函数外,还有一项重要内容就是运算符重载,熟知这些内容对于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 筑业施工方案(3篇)
- 无锡单位年会活动策划方案(3篇)
- 安康杯活动策划方案(3篇)
- 商铺烟机施工方案(3篇)
- 北京市门头沟区2023-2024学年八年级下学期学业质量检测生物考题及答案
- 安徽省宣城市宁国市2022-2023学年高三上学期第一次月考化学试卷及答案
- 新城学校面试题目及答案
- 行政采购申请审批流程模板
- 期中考试作文尊重生命350字(8篇)
- 时间炸弹课件
- 四年级名人名言80句
- 区域新能源集控中心建设方案
- 电气控制与plc实训教程PPT完整全套教学课件
- 《寻梦环游记(2017)》完整中英文对照剧本
- 2023年医药卫生技能鉴定考试-角膜接触镜验配员考试参考题库(含答案)
- 电子护理文书书写规范
- 肿瘤患者食欲症状问卷
- 高考语文专题复习:小说阅读特殊“异常视角”知识-儿童视角、女性视角、动物视角
- GB/T 20235-2006银氧化锡电触头材料技术条件
- 个人承包车辆运输合同
- 《口腔疾病概要》课件口腔医学技术专业
评论
0/150
提交评论