计科实验六多态的应用参考答案.docx

上传人:b****4 文档编号:5660841 上传时间:2023-05-08 格式:DOCX 页数:10 大小:35.29KB
下载 相关 举报
计科实验六多态的应用参考答案.docx_第1页
第1页 / 共10页
计科实验六多态的应用参考答案.docx_第2页
第2页 / 共10页
计科实验六多态的应用参考答案.docx_第3页
第3页 / 共10页
计科实验六多态的应用参考答案.docx_第4页
第4页 / 共10页
计科实验六多态的应用参考答案.docx_第5页
第5页 / 共10页
计科实验六多态的应用参考答案.docx_第6页
第6页 / 共10页
计科实验六多态的应用参考答案.docx_第7页
第7页 / 共10页
计科实验六多态的应用参考答案.docx_第8页
第8页 / 共10页
计科实验六多态的应用参考答案.docx_第9页
第9页 / 共10页
计科实验六多态的应用参考答案.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计科实验六多态的应用参考答案.docx

《计科实验六多态的应用参考答案.docx》由会员分享,可在线阅读,更多相关《计科实验六多态的应用参考答案.docx(10页珍藏版)》请在冰点文库上搜索。

计科实验六多态的应用参考答案.docx

计科实验六多态的应用参考答案

2011计科实验六-多态的应用参考答案

实验六虚函数与多态性

一、实验目的和要求

1.理解静态多态性和动态多态性。

2.掌握运算符重载的基本方法。

3.掌握虚函数的定义与使用方法。

二、实验内容

1.定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。

定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。

定义一个Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。

#include

usingnamespacestd;

#include

classAnimal

{

public:

Animal(stringName,stringKind);

virtualvoidshow()=0;

protected:

stringname;

stringkind;

};

Animal:

:

Animal(stringName,stringKind)

{

name=Name;

kind=Kind;

}

classCat:

publicAnimal

{

public:

Cat(stringName,stringKind):

Animal(Name,Kind)

{}

voidshow()

{

cout<<"猫的种类和名字是:

"<

cout<

}

};

classDog:

publicAnimal

{

public:

Dog(stringName,stringKind):

Animal(Name,Kind)

{}

voidshow()

{

cout<<"狗的种类和名字是:

"<

cout<

}

};

classTiger:

publicCat

{

public:

Tiger(stringName,stringKind):

Cat(Name,Kind)

{}

voidshow()

{

cout<<"老虎的种类和名字是:

"<

cout<

}

};

voidmain()

{

Animal*p;

Tigera("华南虎","圆圆");

p=&a;

p->show();

Catb("波斯猫","豆豆");

p=&b;

p->show();

Dogc("狼狗","黑熊");

p=&c;

p->show();

}

2、模拟定义存折类,并派生出信用卡类;在存折类中提供可以实现开户,存款、取款和查询余额的函数,要求取款金额必须小于余额;信用卡类对取款操作进行修改,允许透支一定金额;在main()函数中定义对象,模拟生活中存折和信用卡的使用过程。

#include

usingnamespacestd;

#include

/*模拟定义存折类,并派生出信用卡类;

在存折类中提供可以实现开户,存款、取款和查询余额的函数,

要求取款金额必须小于余额;

信用卡类对取款操作进行修改,允许透支一定金额;

在main()函数中

定义对象,模拟生活中存折和信用卡的使用过程。

*/

classbankbook

{

private:

stringaccountnumber;

stringpassword;

stringid;

stringname;

floatbalance;//

public:

bankbook(string,string,string,string,float);

voiddeposit();//存款

voidwithdraw();//取款

voidinquiry();//查询

};

bankbook:

:

bankbook(stringAccountnumber,stringPassword,stringId,stringName,floatBalance)

{

accountnumber=Accountnumber;

name=Name;password=Password;id=Id;

balance=Balance;

}

voidbankbook:

:

deposit()

{

floatmoney;

cout<<"请输入你要存款的金额"<

cin>>money;

balance=balance+money;

cout<<"您的余额为"<

}

voidbankbook:

:

withdraw()

{

3.利用第一题中的各种动物,定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类的相关函数。

注意指针的用法。

classZoo

{

public:

Zoo(intmax);//构造函数,max为最多能圈养的动物数

~Zoo(){deleteresidents};//析构函数

intAccept(Animal*d);//接受动物

voidListAnimals();//显示动物园所有的动物

private:

intmaxanimals;//动物园最多能圈养的动物数

intnumanimals;//动物园当前圈养的动物数

Animal**residents;//指向动物园全员的动物对象的指针数

};

#include

usingnamespacestd;

#include

classAnimal{

public:

Animal(stringName="",stringKind="");

virtualvoidIdentify()

{

cout<

}

protected:

stringname;

stringkind;

};

Animal:

:

Animal(stringName,stringKind)

{

name=Name;kind=Kind;

}

classCat:

publicAnimal{

public:

Cat(stringName,stringKind):

Animal(Name,Kind){}

voidIdentify()

{

cout<<"猫是:

"<

"<

}

};

classDog:

publicAnimal{

public:

Dog(stringName,stringKind):

Animal(Name,Kind){}

voidIdentify()

{

cout<<"狗是:

"<

"<

}

};

classTiger:

publicCat{

public:

Tiger(stringName,stringKind):

Cat(Name,Kind){}

voidIdentify()

{

cout<<"老虎是:

"<

"<

}

};

classZoo

{

public:

Zoo(intmax);//构造函数,max为最多能圈养的动物数

//~Zoo(){deleteresidents}//析构函数

intAccept(Animal*d);//接受动物

voidListAnimals();//显示动物园所有的动物

private:

intmaxanimals;//动物园最多能圈养的动物数

intnumanimals;//动物园当前圈养的动物数

Animal**residents;//指向动物园全员的动物对象的指针数

};

Zoo:

:

Zoo(intmax)

{

maxanimals=max;

numanimals=0;

residents=newAnimal*[max];

}

intZoo:

:

Accept(Animal*d)

{

residents[numanimals]=d;

numanimals++;

returnnumanimals;

}

voidZoo:

:

ListAnimals()

{

inti=0;

cout<<"动物园里面包括的动物有:

"<

"<

for(i=0;i

residents[i]->Identify();

}

voidmain()

{

Animal*p;

Catc("凯迪","波斯猫");

Dogd("土豆","贵宾犬");

Dogd1("哈利","牧羊犬");

Tigert("圆圆","华南虎");

Tigert1("团团","东北虎");

p=&c;

Zooz(10);

z.Accept(p);

z.Accept(&d);

z.Accept(&t);

z.Accept(&d1);

z.Accept(&t1);

z.ListAnimals();

}

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2