实验2 派生类与继承docWord格式文档下载.docx

上传人:b****5 文档编号:16751835 上传时间:2022-11-25 格式:DOCX 页数:14 大小:47.67KB
下载 相关 举报
实验2 派生类与继承docWord格式文档下载.docx_第1页
第1页 / 共14页
实验2 派生类与继承docWord格式文档下载.docx_第2页
第2页 / 共14页
实验2 派生类与继承docWord格式文档下载.docx_第3页
第3页 / 共14页
实验2 派生类与继承docWord格式文档下载.docx_第4页
第4页 / 共14页
实验2 派生类与继承docWord格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验2 派生类与继承docWord格式文档下载.docx

《实验2 派生类与继承docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验2 派生类与继承docWord格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

实验2 派生类与继承docWord格式文档下载.docx

intgetx()

{returnx;

intx;

};

classDerived:

publicBase{

voidsety(inti)

{y=i;

intgety()

{returny;

voidshow()

{cout<

<

"

Base:

:

x="

x<

endl;

inty;

intmain()

{

Derivedbb;

bb.setx(16);

bb.sety(25);

bb.show();

cout<

bb.x<

Derived:

y="

bb.y<

bb.getx()<

bb.gety()<

return0;

运行结果:

(1)写出程序的运行结果。

(2)按以下要求,对程序进行修改后再调试,指出调试中出错的原因。

将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?

为什么?

在派生类中不能使用基类的数据成员。

因为数据成员为私有的。

将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?

主函数中不能访问基类中的保护数据成员。

因为数据成员被保护了。

在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?

Setx、x、getx不能访问Base中的共有数据成员。

因为派生继承为是由继承。

在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?

和上面的问题一样。

2、源程序代码:

classPerson{

voidxinxi()

{

cin>

>

stu_no;

name;

sex;

age;

}

cout<

编号:

stu_no<

姓名:

name<

性别:

sex<

年龄:

age<

private:

intstu_no;

charname[15];

charsex[3];

intage;

classStudent:

publicPerson{

voidshuru1()

system;

score;

voidshow1()

院系:

system<

成绩:

score<

floatscore;

charsystem[15];

classTeacher:

voidshuru2()

postion;

part;

voidshow2()

职称:

postion<

部门:

part<

charpostion[20];

charpart[56];

voidmain()

StudentA;

A.xinxi();

A.show();

A.shuru1();

A.show1();

TeacherB;

B.xinxi();

B.show();

B.shuru2();

B.show2();

运行结果:

3、源程序代码:

(1)阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果。

//test4_3_1.cpp

string>

classMyArray{

MyArray(intleng);

~MyArray();

voidInput();

voidDisplay(string);

protected:

int*alist;

intlength;

MyArray:

MyArray(intleng)

if(leng<

=0)

errorlength"

;

exit

(1);

alist=newint[leng];

length=leng;

if(alist==NULL)

assignfailure"

MyArray类对象已创建。

~MyArray()

delete[]alist;

MyArray类对象被撤销。

voidMyArray:

Display(stringstr)

inti;

int*p=alist;

str<

length<

个整数:

for(i=0;

i<

length;

i++,p++)

*p<

"

Input()

请键盘输入"

int*p=alist;

*p;

MyArraya(5);

a.Input();

a.Display("

显示已输入的"

);

(2)声明一个类SortArray继承类MyArray,在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能。

classSortArray:

publicMyArray{

voidSort();

SortArray(intleng):

MyArray(leng)

SortArray类对象已创建。

virtual~SortArray();

SortArray:

~SortArray()

SortArray类对象被撤销。

voidSortArray:

Sort()

inti,j;

intmin,temp;

inta[5];

a[i]=*p;

for(i=0;

4;

i++)

{

min=i;

for(j=i;

j<

5;

j++,p++)

if(a[min]>

a[j])min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

p=alist;

}

*p=a[i];

p=alist;

SortArrays(5);

s.Input();

s.Display("

显示排序以前的"

s.Sort();

显示排序以后的"

(3)声明一个类ReArray继承类MyArray,在该类中定义一个函数,具有将输入的整数进行倒置的功能。

classReArray:

voidreverse();

ReArray(intleng);

virtual~ReArray();

voidReArray:

reverse()

inti,temp;

intb[5];

b[i]=*p;

=length/2;

temp=b[i];

b[i]=b[length-i-1];

b[length-i-1]=temp;

p=alist-1;

*p=b[i];

length/2;

ReArray:

~ReArray()

ReArray类对象被撤销。

ReArray(intleng):

ReArray类对象已创建。

ReArrays(5);

显示倒置以前的"

s.reverse();

显示倒置以后的"

(4)声明一个类AverArray继承类MyArray,在该类中定义一个函数,具有求输入的整数平均值的功能。

classAverArray:

AverArray(intleng);

~AverArray();

doubleAver();

AverArray:

AverArray(intleng):

AverArray类对象已创建。

~AverArray()

AverArray类对象被撤销。

doubleAverArray:

Aver()

inti,c[5];

doubleave=0,sum=0;

c[i]=*p;

sum+=c[i];

ave=sum/length;

p=alist;

*p=ave;

returnave;

AverArrays(5);

输入的"

5个数相加后的平均值:

s.Aver();

printf("

\n"

(5)请读者自行编写构造函数、析构函数和求平均值函数Aver(求解整数的平均值),以及修改主函数。

声明一个NewArray类,同时继承了类SortArray,ReArray和AverArray,使得类NewArray的对象同时具有排序、倒置和求平均值的功能。

在继承的过程中声明MyArray为虚基类,体会虚基类在解决二义性问题中的作用

三、实验结论

(1)运用继承可以解决代码的重用性问题

(2)通过继承可以将基类中的成员运用到派生类当中

(3)通过对象调用成员函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1