实验五 运算符重载完成.docx
- 文档编号:10767336
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:26
- 大小:38.36KB
实验五 运算符重载完成.docx
《实验五 运算符重载完成.docx》由会员分享,可在线阅读,更多相关《实验五 运算符重载完成.docx(26页珍藏版)》请在冰点文库上搜索。
实验五运算符重载完成
实验五运算符重载的应用
班级:
B135A2学号:
*********姓名:
杨弘成绩:
一.实验目的
1、理解运算符重载的作用;
2、掌握运算符重载的两种方法;
3、掌握单目、双目运算符的重载;
二.使用的设备和仪器
计算机+WindowsXP+VisualC++6.0
三.实验内容及要求
1、定义一个复数类Complex,重载运算符“-”,使之能用于复数与实数的减法运算。
参加运算的两个操作数一个是类的对象,一个是实数,顺序任意。
例如:
i-c,c-i均合法(其中,c为复数类的对象,i为实数)。
减法规则:
复数实部与实数相减,复数虚部不变。
2、定义点类Point,重载运算符“+”、“-”、“==”、“!
=”、“++”、“--”、“>>”、“<<”,实现两个点的相加、相减、相等、不等、自增、自减、输入和输出运算。
3、定义一个矩阵类Matrix,均为M行N列,通过重载运算符“+”、“-”,“<<”,“>>”,“++”,“--”,“==”,“!
=”来实现矩阵的相加、相减、输出、输入、自增、自减以及相等、不等的判断。
4、定义时间类Time,时间的表示采用24小时制。
重载运算符“<<”和“>>”实现时间的输出和输入;重载运算符“+”和“-”实现时间推后和提前若干分钟;重载运算符“++”和“--”实现当前时间推后和提前1小时;重载“>”、“<”、“==”来判断两个时间之间大于、小于、等于以及不等于的关系。
注意:
输入时需对数据合法性进行判断。
5、编写一个程序,处理一个复数与一个double型数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。
定义复数(Complex)类,在成员函数中包含重载类型转换运算符:
Operatordouble(){returnreal;}
6、定义一个教师类和一个学生类,二者有一部分数据成员是相同的,例如num,name,sex。
请编程,将一个学生类对象转换为教师类,只将以上3个相同的数据成员移植过去。
可以设想为:
一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。
四.实验步骤
1.程序代码:
/*1、定义一个复数类Complex,重载运算符"-",使之能用于复数与实数的减法运算。
参加运算的两个操作数一个是类的对象,一个是实数,顺序任意。
例如:
i-c,c-i均合法(其中,c为复数类的对象,i为实数)。
减法规则:
复数实部与实数相减,复数虚部不变。
*/
#include
usingstd:
:
cin;
usingstd:
:
cout;
usingstd:
:
endl;
//usingnamespacestd;
classComplex//定义复数类
{
private:
doublereal,imag;
public:
Complex()
{
real=0;
imag=0;
}
Complex(doublea,doubleb)
{
real=a;
imag=b;
}
voidDisplay();
voidInput();
friendComplexoperator-(Complex&a,doubleb);
friendComplexoperator-(doubleb,Complex&a);
};
Complexoperator-(Complex&a,doubleb)//定义“-”重载函数
{
returnComplex(a.real-=b,a.imag);
}
Complexoperator-(doubleb,Complex&a)
{
returnComplex(a.real-=b,a.imag);
}
voidComplex:
:
Input()
{
cout<<"*********输入**********"< cout<<"请输入复数的虚部和实部: "; cin>>real>>imag; } voidComplex: : Display() { cout<<"*********显示**********"< cout< } intmain()//主函数 { Complexc(1,1),c1; doublem; c.Display(); cout<<"请输入需要与复数相减的实数: "; cin>>m; c=c-m; c.Display(); return0; } 运行结果: 2.程序代码: /*2、定义点类Point,重载运算符"+"、"-"、"=="、"! ="、"++"、"--"、">>"、"<<", 实现两个点的相加、相减、相等、不等、自增、自减、输入和输出运算。 */ //#include #include //usingstd: : cin;//用#include : cin;using //std: : cout;usingstd: : endl;对重载流插入、流提取运算符错误 //usingstd: : cout; //usingstd: : endl; //usingnamespacestd; classPoint//定义point类 { private: doublex; doubley; staticintcount; public: Point() { x=0;y=0; } voidInput(); voidDisplay(); Pointoperator+(Point&b); Pointoperator-(Point&b); friendintoperator==(Point&a,Point&b); friendintoperator! =(Point&a,Point&b); friendPointoperator++(Point&a); friendPointoperator++(Point&a,int); friendPointoperator--(Point&a); friendPointoperator--(Point&a,int); friendistream&operator>>(istream&input,Point&a); friendostream&operator<<(ostream&output,Point&a); }; intPoint: : count=0;//注意赋值时没有static,"intstaticPoint: : count=0;"wrong! ! voidPoint: : Input() { cout<<"******输入******"< cout<<"请输入点坐标(x,y)"; cin>>x>>y; count++; } voidPoint: : Display() { cout<<"******显示******"< cout<<"第"< "<<"("< } PointPoint: : operator+(Point&b)//重载“+”为成员函数 { Pointp; p.x=x+b.x; p.y=y+b.y; returnp; } PointPoint: : operator-(Point&b)//重载“-”为成员函数 { Pointp; p.x=x-b.x; p.y=y-b.y; returnp; } intoperator==(Point&a,Point&b)//重载“==”为友员函数 { if(a.x! =b.x) return0; elseif(a.y! =b.y) return0; else return1; } intoperator! =(Point&a,Point&b)//重载“! =”为友员函数 { if(a.x==b.x&&a.y==b.y) return0; elsereturn1; } Pointoperator++(Point&a)//重载“++”为友员函数 { Pointp; p.x=++a.x; p.y=++a.y; returnp; } Pointoperator++(Point&a,int)//重载“++”为友员函数 { Pointc; c.x=a.x; c.y=a.y; a.x++; a.y++; returnc; } Pointoperator--(Point&a)//重载“--”为友员函数 { Pointp; p.x=-a.x; p.y=--a.y; returnp; } Pointoperator--(Point&a,int)//重载“--”为友员函数 { Pointc; c.x=a.x; c.y=a.y; a.x--; a.y--; returnc; } istream&operator>>(istream&input,Point&a)//重载流插入运算符 { input>>a.x>>a.y; returninput; } ostream&operator<<(ostream&output,Point&a)//重载流插入运算符 { output<<"("< returnoutput; } intmain()//主函数 { Pointa,b; a.Input(); a.Display(); b.Input(); b.Display(); a=a+b; cout<<"Overload'+'----a=a+b: "< a=a-b; cout<<"Overload'-'----a=a-b: "< cout<<"重新用'<<','>>'输入输出: "< cout<<"输入a的坐标: "; cin>>a; cout<<"显示<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验五 运算符重载 完成 实验 运算 重载