多态性和虚函数Word文件下载.docx

上传人:b****4 文档编号:18030279 上传时间:2022-12-13 格式:DOCX 页数:15 大小:17.75KB
下载 相关 举报
多态性和虚函数Word文件下载.docx_第1页
第1页 / 共15页
多态性和虚函数Word文件下载.docx_第2页
第2页 / 共15页
多态性和虚函数Word文件下载.docx_第3页
第3页 / 共15页
多态性和虚函数Word文件下载.docx_第4页
第4页 / 共15页
多态性和虚函数Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

多态性和虚函数Word文件下载.docx

《多态性和虚函数Word文件下载.docx》由会员分享,可在线阅读,更多相关《多态性和虚函数Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

多态性和虚函数Word文件下载.docx

virtualdoublearea()const=0;

};

classCircle:

publicShape

Circle(doubler):

radius(r){}

virtualdoublearea()const

{

return3.14159*radius*radius;

};

protected:

doubleradius;

classRectangle:

Rectangle(doublew,doubleh):

width(w),height(h){}

returnwidth*height;

}

doublewidth,height;

classTriangle:

Triangle(doublew,doubleh):

virtualdoublearea()const

return0.5*width*height;

voidprintArea(constShape&

s)

cout<

<

s.area()<

endl;

}

intmain()

floatr,a,b,w,h;

fixed<

setprecision

(2);

cin>

>

r;

Circlecircle(r);

"

areaofcircle="

;

printArea(circle);

a>

b;

Rectanglerectangle(a,b);

areaofrectangle="

printArea(rectangle);

w>

h;

Triangletriangle(w,h);

areaoftriangle="

printArea(triangle);

return0;

ProblemB:

C++习题虚函数-计算图形面积

编写一个程序,定义抽象基类Shape,由它派生出5个派生类:

Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。

用虚函数分别计算几种图形面积,并求它们之和。

要求用基类指针数组,使它每一个元素指向一个派生类对象。

 

正方形的边长

梯形的上底和下底,高

所有图形面积之和(结果保留两位小数)

3.5

2.04.53.2

totalofallareas=574.11

classSquare:

Square(doubles):

side(s){}

returnside*side;

doubleside;

classTrapezoid:

Trapezoid(doublet,doubleb,doubleh):

top(t),bottom(b),height(h){}

return0.5*(top+bottom)*height;

doubletop,bottom,height;

floatr,a,b,w1,w2,w,h;

a;

Squaresquare(a);

w1>

w2>

Trapezoidtrapezoid(w1,w1,h);

Shape*pt[5]={&

circle,&

square,&

rectangle,&

trapezoid,&

triangle};

doubleareas=0.0;

for(inti=0;

i<

5;

i++)

areas=areas+pt[i]->

area();

totalofallareas="

areas<

ProblemC:

抽象一个形状类

阮宝同学期待着暑假来临,知道C++不好好复习麻烦不小。

没有多态性,那就不叫面向对象,老师不划重点也能猜到。

嘿嘿,自己做个经典题,怎么变题也不怕。

老湿,再难的题还有木有?

输入四个数,前两个是矩形的长和宽,后两个是三角形的底边长和高。

分两行输出两个数,第一个是矩形的面积,第二个是三角形的面积。

3.56.4

22.4

11.2

doublea,b;

//输入矩形的长和宽

Rectangler(a,b);

//建立Rectangle类对象r,矩形长a宽b

Shape*s1=&

s1->

area()<

//输出矩形的面积

doublew,h;

Trianglet(w,h);

//建立Triangle类对象t,三角形底边长w高h

Shape&

s2=t;

s2.area();

//输出三角形面积

ProblemD:

虚函数练习:

动物2

长期的物种进化使自然界出现了生活在陆地上的陆生动物和生活在水中的水生动物。

根据已有主函数编写动物类,陆生动物类和水生动物类。

动物的体长,体重,性别;

水生动物的体长,体重,性别,游泳速度;

陆生动物的体长,体重,性别,奔跑速度;

5222f

6232m122

7242m102

height:

52

weight:

22

sex:

f

62

32

m

swimming_speed:

122

72

42

running_speed:

102

classanimal

{

animal(inth,intw,chars)

height=h;

weight=w;

sex=s;

virtualvoiddisplay()

{

height<

weight<

sex<

}

intheight;

intweight;

charsex;

classaqu_animal:

publicanimal

aqu_animal(inth,intw,chars,ints_p):

animal(h,w,s),swimming_speed(s_p){}

swimming_speed<

intswimming_speed;

classter_animal:

ter_animal(inth,intw,chars,intr_p):

animal(h,w,s),running_speed(r_p){}

running_speed<

intrunning_speed;

intmain()

inta,b,s,r;

charc;

animal*p;

b>

c;

animalpa(a,b,c);

p=&

pa;

p->

display();

c>

s;

aqu_animalpb(a,b,c,s);

pb;

ter_animalpc(a,b,c,r);

pc;

ProblemE:

交通工具信息

有一个交通工具类vehicle,将它为基类派生的有派生小车类car,卡车类truck和轮船类boat,定义这些类,并使其能够显示其各类交通工具的详细信息。

他们包含的信息,有如下几种:

1.名字 

-----与输入的名字相符合

2.时速(km/h) 

-----最高时速

3.耗油量(L/100km) 

-----在经济时速下测得耗油量

小车类:

250km/h

14.8L/100km

卡车类:

140km/h

18L/100km

轮船类:

50km/h

8.33L/100km

输入三个派生类对应名字。

输出对应类型的信息。

Mercedes_Benz

Transport_truck

Boat

classVehicle

public:

virtualvoidshowinfo()=0;

classCar:

publicVehicle

Car(stringn):

name(n){}

virtualvoidshowinfo()

Mercedes_Benz"

250km/h"

'

\n'

14.8L/100km"

stringname;

classTruck:

Truck(stringn):

Transport_truck"

140km/h"

18L/100km"

classBoat:

Boat(stringn):

Boat"

50km/h"

8.33L/100km"

Vehicle*vp;

stringname0,name1,name2;

name0;

Carcar(name0);

name1;

Trucktruck(name1);

name2;

Boatboat(name2);

vp=&

car;

vp->

showinfo();

truck;

boat;

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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