《计算机基础实验课程》实验五 多态

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

}

cout<

}

int main()

{

Rnumber a1(3,5),a2(3,4),a3,a4,a5,a6;

a3=a1+a2;

a4=a1-a2;

a5=a1*a2;

a6=a1/a2;

cout<<"a1=";

a1.display();

cout<<" a2=";

a2.display();

cout<

cout<<"a1+a2=";

a3.display();

cout<

cout<<"a1-a2=";

a4.display();

cout<

cout<<"a1*a2=";

a5.display();

cout<

cout<<"a1/a2=";

a6.display();

cout<

return 0;

}

2. 程序运行结果:

(二)实验题目二:

BaseRun类定义如下:

class BaseRun

{ public:

void Run(){cout<<〝\n…………class BaseRun::Run()……\n〞;} };

定义DogRun,CarRun和PeopleRun类,都继承自BaseRun类,并重载Run()函数,使各类中的Run()函数分别输出不同的内容。

1.程序清单:

#include

using namespace std;

class BaseRun

{

public:

void Run()

{

cout<<"\n……class BaseRun::Run()……\n";

}

};

class DogRun:public BaseRun

{

public:

void Run()

{

cout<<"\n……class DogRun::Run()……\n";

}

};

class CarRun:public BaseRun

{

public:

void Run()

{

cout<<"\n……class CarRun::Run()……\n";

}

};

class PeopleRun:public BaseRun

{

public:

void Run()

{

cout<<"\n……class PeopleRun::Run()……\n";

}

};

void main()

{

BaseRun BR;

DogRun DR;

CarRun CR;

PeopleRun PR;

BR.Run();

DR.Run();

CR.Run();

PR.Run();

cout<

}

2.程序运行结果:

相关文档
最新文档