运算符重载实验报告.docx
- 文档编号:3001506
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:17
- 大小:18.48KB
运算符重载实验报告.docx
《运算符重载实验报告.docx》由会员分享,可在线阅读,更多相关《运算符重载实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
运算符重载实验报告
GuangxiUniversityofScienceandTechnology
实验报告
实验课程:
C++程序设计教程
实验内容:
运算符重载
院(系):
专业:
软件工程方向
班级:
学生姓名:
学号:
指导教师:
2013年11月18日
一.实验目的:
(1)掌握运算符重载的概念和应用。
(2)掌握用成员函数、友元函数重载运算符的特点。
(3)理解一些特殊运算符的重载。
二.实验内容
(-)实验题目一:
(1)将以下程序更改为友元函数重载的形式并上机运行。
#include
classRMB{//人民币类
public:
RMB(doubled){yuan=d;jf=(d-yuan)/100;}
RMBinterest(doublerate);//计算利息
RMBadd(RMBd);//人民币加
voiddisplay(){cout<<(yuan+jf/100.0)< RMBoperator+(RMBd){returnRMB(yuan+d.yuan+(jf+d.jf)/100);} //人民币加的运算符重载 RMBoperator*(doublerate){returnRMB((yuan+jf/100)*rate);} private: unsignedintyuan;//元 unsignedintjf;//角分 }; RMBRMB: : interest(doublerate) { returnRMB((yuan+jf/100.0)*rate); } RMBRMB: : add(RMBd) { returnRMB(yuan+d.yuan+jf/100.0+d.jf/100.0); }//以下是计算应付人民币的两个版本 RMBexpense1(RMBprinciple,doublerate) { RMBinterest=principle.interest(rate); returnprinciple.add(interest); } RMBexpense2(RMBprinciple,doublerate) { RMBinterest=principle*rate;//本金乘利息 returnprinciple+interest;//连本带利 } voidmain() { RMBx=10000.0; doubleyrate=0.035; expense1(x,yrate).display(); expense2(x,yrate).display(); } 1.要点分析: 2.程序源代码: #include classRMB{//人民币类 public: RMB(doubled){yuan=d;jf=(d-yuan)/100;} RMBinterest(doublerate);//计算利息 RMBadd(RMBd);//人民币加 voiddisplay(){cout<<(yuan+jf/100.0)< RMBoperator+(RMBd){returnRMB(yuan+d.yuan+(jf+d.jf)/100);} //人民币加的运算符重载 RMBoperator*(doublerate){returnRMB((yuan+jf/100)*rate);} private: unsignedintyuan;//元 unsignedintjf;//角分 }; RMBRMB: : interest(doublerate) { returnRMB((yuan+jf/100.0)*rate); } RMBRMB: : add(RMBd) { returnRMB(yuan+d.yuan+jf/100.0+d.jf/100.0); }//以下是计算应付人民币的两个版本 RMBexpense1(RMBprinciple,doublerate) { RMBinterest=principle.interest(rate); returnprinciple.add(interest); } RMBexpense2(RMBprinciple,doublerate) { RMBinterest=principle*rate;//本金乘利息 returnprinciple+interest;//连本带利 } voidmain() { RMBx=10000.0; doubleyrate=0.035; expense1(x,yrate).display(); expense2(x,yrate).display(); } 3.实验结果: (二)实验题目二: (2)将以下程序中重载运算符定义函数的返回类型更改(值返回更改为引用返回,引用 返回更改为值返回),观察程序运行结果,说明原因。 #include classRMB{ public: RMB(unsignedintd,unsignedintc); friendRMBoperator+(RMB&,RMB&); friendRMB&operator++(RMB&); voiddisplay(){cout<<(yuan+jf/100.0)< protected: unsignedintyuan; unsignedintjf; }; RMB: : RMB(unsignedintd,unsignedintc) { yuan=d; jf=c; while(jf>=100){//以使构造时,确保角分值小于100 yuan++; jf-=100; } } RMBoperator+(RMB&s1,RMB&s2)//此处改为RMB&operator+(RMB&s1,RMB&s2) { unsignedintjf=s1.jf+s2.jf; unsignedintyuan=s1.yuan+s2.yuan; RMBresult(yuan,jf); returnresult; } RMB&operator++(RMB&s)//此处改为RMBoperator++(RMB&s) { s.jf++; if(s.jf>=100){ s.jf-=100; s.yuan++; } returns; } voidmain() { RMBd1(1,60); RMBd2(2,50); RMBd3(0,0); d3=d1+d2; ++d3; d3.display(); } 1.要点分析: 2.程序源代码: 3.实验结果 (三)实验题目三: (3)上机分析下面程序,掌握运算符重载的方法。 #include classComplex { friendComplexoperator+(constdouble&d,constComplex&c); friendComplexoperator-(constdouble&d,constComplex&c); doublem_fReal,m_fImag; public: Complex(constdouble&r=0,constdouble&i=0): m_fReal(r),m_fImag(i) {} Complex(constComplex&c): m_fReal(c.m_fReal),m_fImag(c.m_fImag) {} doubleGetReal()const { returnm_fReal; } doubleGetImag()const { returnm_fImag; } Complex&operator=(constComplex&c) { if(this==&c) { return*this; } m_fReal=c.m_fReal; m_fImag=c.m_fImag; return*this; } Complexoperator+(constComplex&c) { returnComplex(m_fReal+c.m_fReal,m_fImag+c.m_fImag); } Complexoperator-(constComplex&c) { returnComplex(m_fReal-c.m_fReal,m_fImag-c.m_fImag); } Complexoperator+(constdouble&d) { returnComplex(m_fReal+d,m_fImag); } Complexoperator-(constdouble&d) { returnComplex(m_fReal-d,m_fImag); } }; Complexoperator+(constdouble&d,constComplex&c) { returnComplex(d+c.m_fReal,c.m_fImag); } Complexoperator-(constdouble&d,constComplex&c) { returnComplex(d-c.m_fReal,c.m_fImag); } intmain() { Complexc1(3.3,4.4); Complexc2(5.5,2.2); Complexc3; c3=c1+c2; cout<<"C3="< c3=c1-c2; cout<<"C3="< c3=c1+c2; cout<<"C3="< c3=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运算 重载 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)