- 4
- 0
- 约3.4千字
- 约 6页
- 2019-09-10 发布于山西
- 举报
实验八 多态性与虚函数
一、实验目的和要求
了解多态的概念;
了解虚函数的作用及使用方法;
了解静态关联和动态关联的概念和用法;
了解纯虚函数和抽象类的概念和用法
二、实验内容和结果
阅读下面的程序?
1.1请写出程序的执行结果,并在上机时对照理解?
class?Vehicle??
{public:??
? void?run()?const?{?cout??run?a?vehicle.?endl;?}?//(1)?run()为虚函数?
};??
class?Car:?public?Vehicle??
{public:??
? void?run()?const?{cout??run?a?car.?endl;?? }??
};??
class?Airplane:?public?Vehicle??
{public:??
? void?run()?const?{cout??run?a?airplane.?endl;}??
};??
int?main()??
{? cout(a)?直接用对象访问成员函数:?endl;?
? Vehicle?v;?
? v.run();?
? Car?car;??
? Airplane?airplane;??
? car.run();?
? airplane.run();?
? cout(b)?用指向基类的指针访问成员函数:?endl;?
? Vehicle?*vp;?
? vp=car;?
? vp‐run();?
? vp=airplane;?
? vp‐run();?
}??
1.2 如果将 Vehicle 类的定义修改为虚函数,其余不变,请写出程序的执行结果,并在上机时对照理解?
class?Vehicle??
{public:??
? virtual?void?run()?const?{?cout??run?a?vehicle.?endl;?}?//(2)?run()为虚函数?
};?
1.3如果将 Vehicle 类的定义修改为纯虚函数,找出 main()函数中将使编译出错的行删除(或改为注释) ,请写出程序的执行结果,并在上机时对照理解?
class?Vehicle??
{public:??
? virtual?void?run()?const?=?0;?//(3)?run()为纯虚函数?
};??
用自己的话概括你对虚函数、多态性和抽象类的理解。
虚函数:就是在基类声明函数是虚拟的,并不是实际存在的函数,允许在派生类中重新定义与基类同名的函数.
多态性:同一类族中不同类的对象,对同一函数调用做出不同的响应。
抽象类:不用来定义对象而只作为一种基本类型用作继承的类;为一个类族提供一个公共接口。
利用虚函数实现的多态性来求四种几何图形的面积之和。
这四种几何图形是:三角形、矩形、正方形和圆。几何图形的类型可以通过构造函数或通过成员函数来设置。
解:
计算这四种几何图的面积公式分别是:
a[i]-Area()的边长为W,高为H时,则三角形的面积为W* H/2;
矩形的边长为W,宽为H时,则其面积为W* H;
正方形的边长为S,则正方形的面积为S*S;
圆的半径为R,其面积为 3.1415926 *R *R。
为设置几何图形的数据并求出几何图形的面积,需要定义一个包含两个虚函数的类:
class Shape
{
public:
virtual float Area( void) =0; //求面积
virtual void Setdata(float ,float =0) =0; //设置图形数据
};
因面积的计算依赖于几何图形,故在类中只能定义一个纯虚函数Area。同理,设置几何图形数据的函数Setdata也只能定义为虚函数。
把这个基类派生出其它几何图形类。如派生出的三角形类为:
class Triangle:public Shape
{
float W,H; //三角形边长为W,高为H
public:
Triangle(float w=0,float h=0){ W=w; H = h; }
float Area( void){ return W*H/2; }
void Setdata(float w,float h=0){ W=w; H = h; }
};
在派生类中定义了基类中两个虚函数的实现。为了实现求面积和设置数据的多态性,必须定义一个类,该类中定义一个指向基类Shape的指针数组,其元素分别指向由基类Shape派生出的不同的几何图形类,并完成求出所有几何图形面积之和,以及设置参数的函数。
源程序:
#includeiostream
using namespace std;
class Shape
{
pu
您可能关注的文档
最近下载
- 以工代赈40年:演进历程、政策逻辑与未来展望.pdf VIP
- (反光)灯槽(走廊天花)安装施工方案及技术措施.docx VIP
- 地下车库环氧地坪施工安全方案.docx VIP
- 基于人工智能的区域教育质量监测:数据质量控制与评估体系构建教学研究课题报告.docx
- 美国民事没收面临的违反正当程序的抗辩.doc VIP
- 美国民事没收无辜所有者抗辩:历史、现状与启示.doc VIP
- 全国职业大赛(中职)ZZ012食品药品检验赛项赛题库共计10套.docx
- 墙体加固设计与施工方案.docx VIP
- NYT1117-2010 水溶肥料钙、镁、硫、氯含量的测定.pdf VIP
- 1MD-HPV-20150304-01 HPV检测临床关注的问题.ppt VIP
原创力文档

文档评论(0)