实验12继承与派生实验思考答案Word下载.docx
《实验12继承与派生实验思考答案Word下载.docx》由会员分享,可在线阅读,更多相关《实验12继承与派生实验思考答案Word下载.docx(9页珍藏版)》请在冰点文库上搜索。
<
"
classone"
endl;
}
};
classtwo:
publicone
{public:
voidoutput()
{output();
cout<
classtwo"
}
classthree:
publictwo
classthree"
voidmain()
{threeA;
A.output();
}
修改为:
{public:
{one:
output();
{two:
A.three:
2.假设图书馆的图书包含书名、编号、作者属性,读者包含姓名和借书证属性,每位读者最多可借5本书,编写程序列出某读者的借书情况。
classbook
{
intid;
char*bookname;
char*author;
public:
book(intx,char*y,char*z)
{
id=x;
bookname=y;
author=z;
classreader
{intnumber;
char*name;
intborrowid[5];
reader(intx,char*y)
{inti;
number=x;
name=y;
for(i=0;
i<
5;
i++)
borrowid[i]=0;
borrow(intid)
{inti;
for(i=0;
if(borrowid[i]==0){borrowid[i]=id;
break;
3.设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。
小车类car是vehicle的私有派生类,其中包含载人数passenger_load。
卡车类truck是vehicle的私有派生类,其中包含载人数passenger_load和载重量payload,每个类都有相关数据的输出方法。
提示:
vehicle类是基类,由它派生出car类和truck类,将公共的属性和方法放在vehicle类中。
classvehicle
{intwheels;
intweight;
vehicle(intx,inty)
{wheels=x;
weight=y;
voidoutput1()
{cout<
vehicle:
wheels<
weight<
classcar:
privatevehicle
intpassenger_load;
car(intr,inta,intb):
vehicle(a,b)
{passenger_load=r;
{output1();
cout<
passenger_load<
classtruck:
intpassenger_load,payload;
truck(intr,intp,inta,intb):
payload=p;
payload<
4.设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。
#definePI3.14
enumcolors{Red,White,Black};
classcircle
{intr;
colorsc;
circle(intx,colorsco)
{r=x;
c=co;
doublearea()
{returnPI*r*r;
show1()
area()<
switch(c)
{caseRed:
cout<
Red"
caseWhite:
White"
caseBlack:
Black"
classtable
{intheigh;
table(inth)
{heigh=h;
show2()
heigh<
classroundtable:
publiccircle,publictable
{public:
roundtable(inta,colorsb,intc):
circle(a,b),table(c){}
output()
{show1();
show2();
main()
{roundtablec1(2.0,Red,4);
c1.output();
5.定义一个字符串类onestr,包含一个存放字符串的成员变量,能够通过构造函数初始化字符串,通过成员函数显示字符串的内容。
在此基础上派生出twostr类,增加一个存放字符串的成员变量,并能通过派生类的构造函数传递参数,初始化两个字符串,通过成员函数进行两个字符串的合并以及输出。
string>
classonestr
{protected:
stringp;
onestr(stringq)
{p=q;
show()
{cout<
p<
classtwostr:
publiconestr
{stringr;
twostr(strings,stringt):
onestr(s)
{r=t;
unite()
{p=p+r;
{twostrss("
abc"
"
def"
);
ss.unite();