




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验七实验七 多态性多态性 函数与运算符重载函数与运算符重载 7 1 实验目的实验目的 1 理解掌握成员函数方式运算符重载 2 理解掌握友元函数方式运算符重载 3 理解掌握 运算符的重载 7 2 实验内容实验内容 7 2 1 程序阅读程序阅读 1 理解下面的程序 并运行查看结果 回答程序后面的问题 include using namespace std class CComplex public CComplex real 0 imag 0 CComplex int x int y real x imag y int real int imag CComplex operator CComplex obj1 CComplex obj2 real obj1 real imag obj1 imag return obj2 int main CComplex obj1 100 30 CComplex obj2 20 30 CComplex obj obj obj1 obj2 cout obj real endl cout obj imag endl return 0 问题一 处的运算符重载 为什么该函数的返回值要设计成 CComplex 类型 答 因为在函数中因为在函数中 return obj2 obj2 是是 CComplex 类型 所以函数返回值要与类型 所以函数返回值要与 return 返回返回 的类型相同 即设计成的类型相同 即设计成 CComplex 类型 类型 问题二 处的运算符重载函数调用就相当于 obj operator obj1 obj2 但是为什么 CComplex 类中的运算符重载函数只设计了一个参数 答 因为成员函数经编译后会产生因为成员函数经编译后会产生 this 指针 指针 this 指针会指向调用该函数的指针会指向调用该函数的 obj1 对象 对象 该该 obj1 对象就是就相当于函数的第一个参数 因此可以在函数参数列表中只设计一个参数对象就是就相当于函数的第一个参数 因此可以在函数参数列表中只设计一个参数 问题三 上述程序设计合理吗 为什么 答 不合理 因为它所实现的功能是不合理 因为它所实现的功能是 obj2 obj1 而重载运算符的名字为 而重载运算符的名字为 这使用起来 这使用起来 非常不直观 会让人以为这实现的功能是非常不直观 会让人以为这实现的功能是 obj1 obj2 2 理解下面的程序 并运行查看结果 回答程序后面的问题 include using namespace std class CComplex public CComplex real 0 0 imag 0 0 CComplex float x float y real x imag y CComplex operator CComplex return obj3 CComplex obj imag return obj void print cout real imag i endl private float real float imag CComplex x imag return x int main CComplex obj1 2 1 3 2 CComplex obj2 3 6 2 5 cout obj1 obj1 print cout obj2 obj2 print CComplex obj3 obj1 obj2 cout before obj3 obj3 print obj3 cout after obj3 obj3 print obj3 cout after obj3 obj3 print CComplex obj4 obj3 cout obj4 obj4 print return 0 问题一 以上程序中的三个运算符重载都有错误 试改正过来 使程序输出正确结果 答 1 两个复数相加两个复数相加 修改方案一 将修改方案一 将 CComplex operator CComplex 定义为友定义为友 元函数在类体外写 元函数在类体外写 修改方案二 将修改方案二 将 CComplex operator CComplex 的形参改的形参改 为一个 写在类体中 哪个对象调用 即对其与另一个对象进行运算符操作 为一个 写在类体中 哪个对象调用 即对其与另一个对象进行运算符操作 2 前置自增前置自增 修改方案 重置自增运算符 设置无形参的重载函数 对所使用的对象进行自增 在通过修改方案 重置自增运算符 设置无形参的重载函数 对所使用的对象进行自增 在通过 return this 返回该对象 返回该对象 3 前置自减前置自减 修改方案 忘记在类中声明为友元函数 修改方案 忘记在类中声明为友元函数 正确代码 正确代码 include using namespace std class CComplex public CComplex real 0 0 imag 0 0 CComplex float x float y real x imag y CComplex operator CComplex return obj3 CComplex imag return this void print cout real imag i endl friend CComplex 3 private float real float imag CComplex x imag return x int main CComplex obj1 2 1 3 2 CComplex obj2 3 6 2 5 cout obj1 obj1 print cout obj2 obj2 print CComplex obj3 obj1 obj2 cout before obj3 obj3 print obj3 cout after obj3 obj3 print obj3 cout after obj3 obj3 print CComplex obj4 obj3 cout obj4 obj4 print return 0 7 2 2 程序设计程序设计 1 把 7 2 1 中第二道题的程序改造成能实现复数的减法 乘法 除法以及后置 运算 并设计主函数来验证重载运算符的用法 include using namespace std class CComplex public CComplex real 0 0 imag 0 0 CComplex float x float y real x imag y CComplex operator CComplex return obj3 CComplex operator int 重载后置自增运算符重载后置自增运算符 CComplex temp this real imag return temp CComplex operator int 重载后置自减运算符重载后置自减运算符 CComplex temp this real imag return temp void print if imag 0 cout real imag i endl else cout real imag i endl friend CComplex operator CComplex 两个复数相乘两个复数相乘 friend CComplex operator CComplex 两个复数相除两个复数相除 private float real float imag CComplex operator CComplex CComplex operator CComplex int main CComplex obj1 3 1 CComplex obj2 2 1 cout obj1 obj1 print cout obj2 obj2 print cout obj1 obj2 CComplex obj3 obj1 obj2 obj3 print cout obj1 obj2 CComplex o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建材墙地砖类原材料采购合同协议
- 2025年城市燃气管道特许经营合同合同履行合同履行监督评估与合同履行监督协议(GF-2004-2502)
- 物业管理服务合同范本及补充协议
- 学校安全管理手册
- 地形影响下台风作用于输电塔 - 线体系的响应特性与应对策略研究
- 地基液化与非液化条件下土-桩-桥墩体系动力响应特性研究
- 地基GPS网:电离层总电子含量监测与多元应用探究
- 企业在职员工保密协议书5篇
- 父母教育方式对子女成就动机的影响-洞察及研究
- 社区邻里关系和谐构建-洞察及研究
- 银行安全用电知识培训课件
- 2025鄂尔多斯市国源矿业开发有限责任公司社会招聘75人笔试参考题库附带答案详解
- 合格兽药知识培训课件
- 国网甘肃电力招聘考试真题2024
- 医院住院综合大楼项目监理大纲
- 第8课《就英法联军远征中国致巴特勒上尉的信》公开课一等奖创新教学设计 统编版语文九年级上册
- 2025-2026学年人美版(北京)(2024)小学美术三年级上册教学计划及进度表
- 5.2凝聚价值追求 教案 -2025-2026学年统编版道德与法治九年级上册
- 2025年高考英语新课标Ⅱ卷点评及2026备考方向 课件
- 军事信息管理办法
- 第4课 科技力量大 第三课时(课件)2025-2026学年道德与法治三年级上册统编版
评论
0/150
提交评论