实验六继承与派生Word格式文档下载.docx

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

实验六继承与派生Word格式文档下载.docx

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

实验六继承与派生Word格式文档下载.docx

char*buf;

};

voidfun(A*a)

Mayyousucceed!

endl;

deletea;

intmain()

{

A*a=newB(15);

fun(a);

return0;

1、

(1)程序运行结果:

A()called.

B()called.

~B()called.

~A()called.

(2)

#include<

classA{

public:

A(inta,intb):

x(a),y(b){cout<

Aconstructor..."

voidAdd(inta,intb){x+=a;

y+=b;

voiddisplay(){cout<

("

x<

"

y<

)"

~A(){cout<

destructorA..."

private:

intx,y;

classB:

privateA{

inti,j;

AAobj;

B(inta,intb,intc,intd):

A(a,b),i(c),j(d),Aobj(1,1){cout<

Bconstructor..."

voidAdd(intx1,inty1,intx2,inty2)

A:

Add(x1,y1);

i+=x2;

j+=y2;

voiddisplay(){

display();

Aobj.display();

cout<

i<

j<

~B(){cout<

destructorB..."

}

intmain()

{

Bb(1,2,3,4);

b.display();

b.Add(1,3,5,7);

(2)程序运行结果:

Aconstructor...

Bconstructor...

(1,2)(1,1)(3,4)

(2,5)(1,1)(8,11)

destructorB...

destructorA...

(3)

A(inta):

x(a){cout<

intf(){return++x;

intx;

publicvirtualA{

inty;

B(inta,intb,intc):

A(a),y(c),Aobj(c){cout<

intf(){

f();

Aobj.f();

return++y;

f()<

\t"

Aobj.f()<

classC:

publicB{

C(inta,intb,intc):

B(a,b,c),A(0){cout<

Cconstructor..."

classD:

publicC,publicvirtualA{

D(inta,intb,intc):

C(a,b,c),A(c){cout<

Dconstructor..."

~D(){cout<

destructorD..."

Dd(7,8,9);

d.f();

d.display();

return0;

(3)程序运行结果:

Aconstructor...9

Bconstructor...9

Cconstructor...

Dconstructor...

121211

destructorD...

(4)

classBase1

public:

Base1()

classBase1!

classBase2

Base2()

classBase2!

classLevel1:

publicBase2,virtualpublicBase1

Level1()

classLevel1!

classLevel2:

publicBase2,virtualpublicBase1

Level2()

classLevel2!

classTopLevel:

publicLevel1,virtualpublicLevel2

TopLevel()

classTopLevel!

TopLevelobj;

 

(4)程序运行结果:

classBase12

classLeve12!

classLeve11!

classTopLeve1!

2.某出版系统发行图书和磁带,利用继承设计管理出版物的类。

要求如下:

建立一个基类Publication存储出版物的标题title、出版物名称name、单价price及出版日期date。

用Book类和Tape类分别管理图书和磁带,它们都从Publication类派生。

Book类具有保存图书页数的数据成员page,Tape类具有保存播放时间的数据成员playtime。

每个类都有构造函数、析构函数,且都有用于从键盘获取数据的成员函数inputData(),用于显示数据的成员函数display()。

2、

string>

classDate

Date(){}

Date(inty,intm,intd);

Date(Date&

d);

voidSetDate(inty,intm,intd);

voidShowDate();

intyear,month,day;

Date:

Date(inty,intm,intd){year=y;

month=m;

day=d;

Date(Date&

d){year=d.year;

month=d.month;

day=d.day;

voidDate:

SetDate(inty,intm,intd)

{year=y;

ShowDate()

{cout<

year<

年"

month<

月"

day<

日"

classTime

Time(){}

Time(inth,intm,ints);

Time(Time&

t);

voidSetTime(inth,intm,ints);

voidShowTime();

inthour,minute,second;

Time:

Time(inth,intm,ints){hour=h;

minute=m;

second=s;

Time(Time&

t){hour=t.hour;

minute=t.minute;

second=t.second;

voidTime:

SetTime(inth,intm,ints){hour=h;

ShowTime(){cout<

hour<

minute<

second<

classPublication

Publication(){}

Publication(stringtitle,stringname,floatprice,inty,intm,intd);

voidinputData();

voiddisplay();

stringtitle;

stringname;

floatprice;

Datedate;

Publication:

Publication(stringtitle,stringname,floatprice,inty,intm,intd)

title(title),name(name),price(price),date(y,m,d){}

voidPublication:

inputData()

Pleaseinputtitle,name,price,publicationdateofabook:

cin>

>

title>

name>

price;

year>

month>

day;

date.SetDate(year,month,day);

display()

title="

title<

name="

name<

price="

price<

date="

date.ShowDate();

classBook:

publicPublication

Book(){}

Book(stringtitle,stringname,floatprice,inty,intm,intd,intpage);

intpage;

Book:

Book(stringtitle,stringname,floatprice,inty,intm,intd,intpage)

Publication(title,name,price,y,m,d){this->

page=page;

voidBook:

{Publication:

inputData();

Pleasethepagesofthebook:

page;

page="

page<

classTape:

Tape(){}

Tape(stringtitle,stringname,floatprice,inty,intm,intd,Timeplaytime);

Timeplaytime;

Tape:

Tape(stringtitle,stringname,floatprice,inty,intm,intd,Timeplaytime)

Publication(title,name,price,y,m,d),playtime(playtime){}

voidTape:

Pleasetheplaytimeofthetape:

hour>

minute>

second;

playtime.SetTime(hour,minute,second);

playtime="

playtime.ShowTime();

{Bookbook1("

教材"

C++程序设计"

30.00,2009,6,1,300);

book1.display();

Timetime1(30,10,20);

Tapetape1("

磁带"

C++程序设计视频"

10.00,2009,8,1,time1);

tape1.display();

Bookbook2;

book2.inputData();

book2.display();

Tapetape2;

tape2.inputData();

tape2.display();

3.分别定义教师类Teacher和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。

要求:

(1)在两个基类中都包含姓名、年龄、性别、地址、电话数据成员。

(2)在Teacher类中还包含数据成员职称title,在Cadre类中还包含数据成员职务post,在Teacher_Cadre类中还包含数据成员工资wage。

(3)对两个基类中的姓名、年龄、性别、地址、电话数据成员用相同的名字,在访问这类数据成员时,指定作用域。

(4)在类体中声明成员函数,在类外定义成员函数。

(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、地址、电话,然后再用cout语句输出职务和工资。

3、

classTeacher

Teacher(stringnam,inta,chars,stringtit,stringad,stringt);

protected:

intage;

charsex;

stringaddr;

stringtel;

Teacher:

Teacher(stringnam,inta,chars,stringtit,stringad,stringt):

name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){}

voidTeacher:

{cout<

name:

age"

age<

sex:

sex<

title:

address:

addr<

tel:

tel<

classCadre

Cadre(stringnam,inta,chars,stringp,stringad,stringt);

stringpost;

Cadre:

Cadre(stringnam,inta,chars,stringp,stringad,stringt):

name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}

voidCadre:

age:

post:

post<

classTeacher_Cadre:

publicTeacher,publicCadre

Teacher_Cadre(stringnam,inta,chars,stringtit,stringp,stringad,stringt,floatw);

voidshow();

floatwage;

Teacher_Cadre:

Teacher_Cadre(stringnam,inta,chars,stringt,stringp,stringad,stringtel,floatw):

Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w){}

voidTeacher_Cadre:

show()

{Teacher:

wages:

wage<

intmain()

{Teacher_Cadrete_ca("

Wang-li"

50,'

f'

prof."

president"

135BeijingRoad,Shanghai"

(021)61234567"

1534.5);

te_ca.show();

4.按下列要求编写程序。

(1)定义一个分数类Score。

它有

3个数据成员:

Chinese//语文课成绩

English//英语课成绩

Mathematics//数学课成绩

2个构造函数:

无参的和带参数的

3个成员函数:

是否带参数根据需要自定

sum()//计算三门课总成绩

print()//输出三门课成绩和总成绩

modify()//修改三门课成绩

(2)定义一个学生类Student。

Num//学号

Name//姓名

MyScore//成绩

sum()//计算某学生三门课总成绩

print()//输出某学生学号、姓名和成绩

modify()//修改某学生学号、姓名和成绩

(3)在主函数中,先定义一个学生类对象数组,再通过for循环给对象数组赋上实际值,最后输出对象数组个元素的值。

4、

classscore

score()

chinese=0;

english=0;

mathematics=0;

score(floatch,floaten,floatma):

chinese(ch),english(en),mathematics(ma){}

floatsum();

voidprint();

voidmodify();

floatchinese;

floatenglish;

floatmathematics;

classstudent

student():

myscore(0,0,0)

{

num="

000000000"

name="

无"

student(stringn,stringna,floatm,floatc,floate):

num(n),name(na),myscore(m,c,e){}

floatsum();

voidprint();

voidmodify();

stringnum;

stri

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

当前位置:首页 > 党团工作 > 党团建设

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

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