实验四 虚函数与多态性

实验四 虚函数与多态性

ID:40645833

大小:55.76 KB

页数:7页

时间:2019-08-05

实验四 虚函数与多态性_第1页
实验四 虚函数与多态性_第2页
实验四 虚函数与多态性_第3页
实验四 虚函数与多态性_第4页
实验四 虚函数与多态性_第5页
资源描述:

《实验四 虚函数与多态性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验四虚函数与多态性实验目的和要求:1了解多态性在C++中的体现。2掌握虚函数的应用。3了解抽象类。实验内容:定义一个基类为哺乳动物类Mammal,其中有数据成员年龄、重量、品种,有成员函数move()、speak()等,以此表示动物的行为。由这个基类派生出狗、猫、马、猪等哺乳动物,它们有各自的行为。编程分别使各个动物表现出不同的行为。要求如下:1、从基类分别派生出各种动物类,通过虚函数实现不同动物表现出的不同行为。2、今有狗:CAIRN:3岁,3kg;DORE:4岁,2kg;猫:CAT:5岁,4kg;马:HORSE,5岁,60kg;猪:PIG,2岁,45kg。3、设置一个Mam

2、mal类数组,设计一个屏幕菜单,选择不同的动物或不同的品种,则显示出动物相对应的动作,直到选择结束。4、对应的动作中要先显示出动物的名称,然后显示年龄、重量、品种、叫声及其他特征。实验原理:1.多态性:多态是指同样的消息被不同类型的对象接受时导致不同的行为,所谓消息是指对类的成员函数的调用,而不同的行为是指不同的实现,也就是调用不同的函数。多态性从实现的角度来讲可以划分为两类:编译时的多态性和运行时的多态性。编译时的多态性是在编译的过程中确定同名操作的具体操作对象,也就是通过重载函数来实现的。运行时的的多态性是在程序运行过程中才动态地确定操作所针对的具体对象,使用虚函数来实现的。

3、2.虚函数:虚函数是重载的另一种形式,它提供了一种更为灵活的多态性机制。虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是运行时才决定如何动作,即所谓的“动态连接”。虚函数成员的定义:virtual函数类型函数名(形参表)3.(1)抽象类:抽象类是一种特殊的类。抽象类是为了抽象和设计的目的而建立的。一个抽象类自身无法实例化,也就是说无法定义一个抽象类的对象,只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化。(2)纯虚函数:纯虚函数是在一个基类中说明的虚函数,他在该基类中没有定义具体的操作内容,要求各派生类必须根据实际需要定义自己的函数版本。纯虚函数的声明格式为:v

4、irtual函数类型函数名(参数表)=0;声明为纯虚函数之后,基类中就不再给出函数的实现部分,它的实现在他的派生类中定义。编程思想:数据成员(访问属性protected)name,age,weight;成员函数:构造函数(带参);纯虚函数:move();speak();setout()刚拿到这道题的时候我觉得这道题非常的复杂。但仔细想想,其实它的编写大概可以分为一下几个步骤:1、分析程序的大致结构;2、建立基类以及基类的派生类所共有的数据和公共函数,即基类数据和基类成员函数。3、分析派生类的成员函数和派生类对于基类成员的访问属性。4、思考如何在主函数中实现对于菜单的选择。程序的基

5、本编写思想如下:建立Mammal基类(public)建立派生类:Dog,Cat,Horse,Pig。它们的关系是并列额具有类似的数据的成员函数。它们对于基类的继承属性均为公有属性成员函数:构造函数(带参):public基类构造函数的申明普通成员函数:move();speak();setout()子啊派生类中将基类实例化建立主函数main()主函数第一部分:建立对象第二部分:设计对象指针数组,将指针指向不同的对象,通过基类对象的指针访问对象第三部分:定义一个字符,将其作为一个程序不截止的记号,运用while循环体系实现对于对象数组的连续访问程序代码:#include

6、h>#include#includeusingnamespacestd;classMammal//建立动物基类Mammal{protected:stringname;intage;floatweight;public:Mammal(stringn,inta,floatw){name=n;age=a;weight=w;}virtualstringmove()=0;virtualstringspeak()=0;virtualvoidsetout()=0;//纯虚函数实现类继承时的多态性};classDog:publicMammal//建立四个类似的

7、类,分别为Dog,Cat,Horse,Pig{public:Dog(stringn,inta,floatw):Mammal(n,a,w){};stringmove(){return"看门或者作为宠物";}stringspeak(){return"汪汪";}voidsetout(){cout<<"狗类的信息:"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。