1、计科实验六多态的应用参考答案2011计科实验六-多态的应用参考答案实验六 虚函数与多态性一、实验目的和要求1.理解静态多态性和动态多态性。2.掌握运算符重载的基本方法。3.掌握虚函数的定义与使用方法。二、实验内容1.定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。定义一个Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。#includeusing namespace std;#includeclass
2、Animalpublic: Animal(string Name,string Kind); virtual void show()=0;protected: string name; string kind;Animal:Animal(string Name,string Kind) name=Name; kind=Kind;class Cat:public Animalpublic: Cat(string Name,string Kind):Animal(Name,Kind) void show() cout猫的种类和名字是:endl; coutkind nameendl; ;class
3、Dog:public Animalpublic: Dog(string Name,string Kind):Animal(Name,Kind) void show() cout狗的种类和名字是:endl; coutkind nameendl; ;class Tiger:public Cat public: Tiger(string Name,string Kind):Cat(Name,Kind) void show() cout老虎的种类和名字是:endl; coutkind nameshow(); Cat b(波斯猫,豆豆); p=&b; p-show(); Dog c(狼狗,黑熊); p=
4、&c; p-show(); 2、模拟定义存折类,并派生出信用卡类;在存折类中提供可以实现开户,存款、取款和查询余额的函数,要求取款金额必须小于余额;信用卡类对取款操作进行修改,允许透支一定金额;在main()函数中定义对象,模拟生活中存折和信用卡的使用过程。#includeusing namespace std;#include/*模拟定义存折类,并派生出信用卡类;在存折类中提供可以实现开户,存款、取款和查询余额的函数,要求取款金额必须小于余额;信用卡类对取款操作进行修改,允许透支一定金额;在main()函数中定义对象,模拟生活中存折和信用卡的使用过程。*/class bankbookpriv
5、ate: string accountnumber; string password; string id; string name; float balance;/public: bankbook(string,string,string,string,float); void deposit();/存款 void withdraw();/取款 void inquiry();/查询;bankbook:bankbook(string Accountnumber,string Password,string Id,string Name,float Balance) accountnumber=
6、Accountnumber; name=Name;password=Password;id=Id; balance=Balance;void bankbook:deposit() float money; cout请输入你要存款的金额money; balance=balance+money; cout您的余额为balanceendl;void bankbook:withdraw()3利用第一题中的各种动物,定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类的相关函数。注意指针的用法。class Zoopublic: Zoo( int max);/构造函数,max为最多能圈养的动物数 Z
7、oo()delete residents;/析构函数 int Accept(Animal *d);/接受动物 void ListAnimals();/显示动物园所有的动物private: int maxanimals;/动物园最多能圈养的动物数 int numanimals;/动物园当前圈养的动物数 Animal *residents;/指向动物园全员的动物对象的指针数;#include using namespace std;#include class Animalpublic: Animal(string Name=,string Kind=); virtual void Identif
8、y() coutkindendl; protected: string name; string kind;Animal:Animal(string Name,string Kind) name=Name;kind=Kind;class Cat:public Animalpublic: Cat(string Name,string Kind):Animal(Name,Kind) void Identify() cout猫是:name 品种:kindendl; ;class Dog:public Animalpublic: Dog(string Name,string Kind):Animal(
9、Name,Kind) void Identify() cout狗是:name 品种:kindendl; ;class Tiger:public Catpublic: Tiger(string Name,string Kind):Cat(Name,Kind) void Identify() cout老虎是:name 种类:kindendl; ;class Zoopublic: Zoo( int max);/构造函数,max为最多能圈养的动物数 /Zoo()delete residents/析构函数 int Accept(Animal *d);/接受动物 void ListAnimals();/显
10、示动物园所有的动物private: int maxanimals;/动物园最多能圈养的动物数 int numanimals;/动物园当前圈养的动物数 Animal *residents;/指向动物园全员的动物对象的指针数;Zoo:Zoo(int max) maxanimals=max; numanimals=0; residents=new Animal*max;int Zoo:Accept(Animal *d) residentsnumanimals=d; numanimals+; return numanimals;void Zoo:ListAnimals() int i=0; cout动物园里面包括的动物有:numanimals只动物,分别为:endl; for(i=0;iIdentify();void main() Animal *p; Cat c(凯迪,波斯猫); Dog d(土豆,贵宾犬); Dog d1(哈利,牧羊犬); Tiger t(圆圆,华南虎); Tiger t1(团团,东北虎); p=&c; Zoo z(10); z.Accept(p); z.Accept(&d); z.Accept(&t); z.Accept(&d1); z.Accept(&t1); z.ListAnimals();
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2