实验三答案.docx
- 文档编号:507623
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:9
- 大小:15.99KB
实验三答案.docx
《实验三答案.docx》由会员分享,可在线阅读,更多相关《实验三答案.docx(9页珍藏版)》请在冰豆网上搜索。
实验三答案
上海电力学院
实验报告
课程名称高级程序设计C++
(2)实验项目实验3多态性应用
姓名学号班级专业
同组人姓名无指导教师姓名卢芳芳实验日期2014年4月30日一、实验目的
通过编程实践,理解运算符重载的意义
深刻理解运算符重载的概念
掌握运算符重载的实现方法
虚函数的应用
二、实验内容和步骤
1.定义点坐标类Point,用成员函数重载++(自增)运算符实现横纵坐标值均加1,用友元函数重载--(自减)运算符,实现横纵坐标值均减1。
●程序源代码(注意添加注释)
#include
usingnamespacestd;
classPoint
{
public:
Point&operator++();//前置++
Pointoperator++(int);//后置++
friendPoint&operator--(Point&t);//前置--
friendPointoperator--(Point&t,int);//前置--
Point(doublex=0,doubley=0)
{
this->x=x;
this->y=y;
}
intgetx()
{
returnx;
}
1
注:
实验报告内容包括:
实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。
intgety()
{
returny;
}
private:
doublex,y;
};
Point&Point:
:
operator++()
{
x++;
y++;
return*this;
}
PointPoint:
:
operator++(int){
Pointtemp=*this;
this->x++;
this->y++;
returntemp;
}
Point&operator--(Point&t){
t.x--;
t.y--;
returnt;
}
Pointoperator--(Point&t,int){
Pointtemp=t;
t.x--;
t.y--;
returntemp;
}
intmain()
{
PointA(1,2),B(0,0);
cout<<"A的值为"< A++; cout<<"A的值为"< B=(A++)++; cout<<"A的值为"< cout<<"B的值为"< ++A; cout<<"A的值为"< B=++(++A); cout<<"A的值为"< cout<<"B的值为"< A--; cout<<"A的值为"< --A; cout<<"A的值为"< return0; } 运行结果(直接截取结果图) 2.编写一个复数类并在该类中添加两个运算符重载函数,一个为成员函数实现两个复数加法,一个为友元函数实现两个复数乘法。 并写出两个运算符重载函数的实现代码。 complex.h #include usingnamespacestd; classComplex { doublereal,image; public: voidset(); voidshow(); Complexoperator+(constComplex&b); friendComplexoperator*(constComplex&a,constComplex&b); }; complex.cpp #include #include"clock.h" usingnamespacestd; voidComplex: : set() { cout<<"请输入复数的实部: "< cin>>real; cout<<"请输入复数的虚部: "< cin>>image; } voidComplex: : show() { if(real==0) { if(image==0) cout<<"复数为: 0"< else cout<<"复数为: "< } else { if(image==0) cout<<"复数为: "< else if(image>0) cout<<"复数为: "< else cout<<"复数为: "< } } ComplexComplex: : operator+(constComplex&b) { Complexx; x.real=real+b.real; x.image=image+b.image; returnx; } Complexoperator*(constComplex&a,constComplex&b) { Complexx; x.real=a.real*b.real-a.image*b.image; x.image=a.real*b.image+a.image*b.real; returnx; } main.cpp #include #include"clock.h" usingnamespacestd; voidmain() { Complexa,b,c; a.set(); cout<<"复数a的值为: "; a.show(); b.set(); cout<<"复数b的值为: "; b.show(); c=a+b; cout<<"复数c=a+b,复数c的值为: "; c.show(); c=a*b; cout<<"复数c=a*b,复数c的值为: "; c.show(); } 3.类clock有三个整型私有成员hour,minute,second,请重载其前置--运算符为类clock的成员函数,实现clock对象的自加1操作,重载运算符<<和>>,实现时间对象的输出,输出格式为hh: mm: ss,请完成相关类定义,函数实现。 ●程序源代码(注意添加注释) ● clock.h #include classclock { private: inthour,minute,second; public: clock&operator--(); friendostream&operator<<(ostream&out,clock&a); friendistream&operator>>(istream&in,clock&a); }; clock.cpp #include #include"clock.h" clock&clock: : operator--() { --second; if(second<0){ second=59; --minute; } if(minute<0){ minute=59; --hour; } if(hour<0){ hour=23; } return*this; } istream&operator>>(istream&in,clock&a) { cout<<"请输入合法的(时hour): "< while(true) { in>>a.hour; if(a.hour>=0&&a.hour<=24) break; else cout<<"时输入错误,请重新输入。 "< } cout<<"请输入合法的(分minute): "< while(true) { in>>a.minute; if(a.minute>=0&&a.minute<=60) break; else cout<<"分输入错误,请重新输入。 "< } cout<<"请输入合法的(秒second): "< while(true) { in>>a.second; if(a.second>=0&&a.second<=60) break; else cout<<"秒输入错误,请重新输入。 "< } returnin; } ostream&operator<<(ostream&out,clock&a) { if(a.hour<10) out<<"0"< "; else out< "; if(a.minute<10) out<<"0"< "; else out< "; if(a.second<10) out<<"0"< "; else out< returnout; } main.cpp #include #include"clock.h" voidmain() { clocka; cin>>a; cout< --a;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 答案