《计算机基础实验课程》实验五 多态
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
院系:计算机学院
实验课程:计算机基础实验课程
实验项目:多态
指导老师:XXX
开课时间:XXXX~ XXXX年度第 2学期专业:XXXX
班级:XXXX级本X班
学生:XXX
学号:XXXXXXXX
一、实验目的与要求:
1.掌握运算符重载的基本方法。
2.掌握虚函数的定义及多态性的实现。
二、实验内容:
(一)实验题目一:
编写有理数(即分数,包括整数类型的分子和分母)类,并进行运算符重载,编写运算符“+”、“-”、“*”、“/”的重载函数,在主函数的函数体内中实现使用运算符直接进行有理数对象的加、减、乘、除运算。
1.程序清单:
#includ e
using namespace std;
class Rnumber
{
public:
Rnumber(){a=0;b=0;}
Rnumber(int,int);
Rnumber operator +(Rnumber &);
Rnumber operator -(Rnumber &);
Rnumber operator *(Rnumber &);
Rnumber operator /(Rnumber &);
void display();
private:
int a;
int b;
};
Rnumber::Rnumber(int x,int y):a(x),b(y){}
Rnumber Rnumber::operator +(Rnumber & x)
{
int i;
i=(a>x.a)?a:x.a;
for(;i!=0;i++)
{
if(i%b==0 && i%x.b==0)
break;
}
return Rnumber(i/b*a+i/x.b*x.a,i);
}
Rnumber Rnumber::operator -(Rnumber & x) {
int i;
i=(a>x.a)?a:x.a;
for(;i!=0;i++)
{
if(i%b==0 && i%x.b==0)
break;
}
return Rnumber(i/b*a-i/x.b*x.a,i);
}
Rnumber Rnumber::operator *(Rnumber & x) {
return Rnumber(a*x.a,b*x.b);
}
Rnumber Rnumber::operator /(Rnumber & x) {
return Rnumber(a*x.b,b*x.a);
}
void Rnumber::display()
{
int n;
n=(a
for(;n>1;n--)
{
if(a%n==0 && b%n==0)
{
a=a/n;
b=b/n;
}
}