};
classderived1
{
intb;
public:
voidsetb(intx){b=x;}
voidshowb(){cout<
};
classderived3:
publicbase,publicderived1
{
intc;
public:
voidsetc(intx,inty,intz){c=z;seta(x);setb(y);}
voidshowc(){cout<};
voidmain()
{
derived3A;
A.seta(10);A.showa();
A.setc(11,22,33);A.showc();
}
运行结果:
10
33
4.上机调试并修改程序中的语法错误,并分析运行结果
#include
usingnamespacestd;
classperson//
{
char*name;
intage;
charadd;
public:
person(){cout<<"personclassconstructor"<~person(){cout<<"personclassdestructor"<};
classstudent:
publicperson//
{
char*department;//
intlevel;//
public:
student(){cout<<"studentclassconstructor"<~student(){cout<<"studentclassdestructor"<};
classteacher:
publicperson//
{
char*major;
floatsalary;
public:
teacher(){cout<<"teacherclassconstructor"<~teacher(){cout<<"teacherclassdestructor"<};
voidmain()
{
students1;//
teachert1;//
}
5.分析程序的结果,并总结多重继承的用途
#include
usingnamespacestd;
classbase
{
intbase_a;
public:
voidset_base_a(intx){base_a=x;}
voidshow_base_a(){cout<<"base_a="<};
classderived1
{
intderived_b;
public:
voidset_derived_b(intx){derived_b=x;}
voidshow_derived_b(){cout<<"derived_b="<};
classderived_base_d1:
publicbase,derived1
{
intderived_c;
public:
voidset_derived_c(intx,inty)
{derived_c=x;
set_derived_b(y);
}
voidshow_derived_c()
{show_base_a();
show_derived_b();
cout<<"derived_c="<};
voidmain()
{
derived_base_d1obj;
obj.set_base_a(13);
obj.set_derived_c(16,30);
obj.show_derived_c();
obj.show_base_a();
}
二、编程题
1.编写一个程序,定义一个汽车类(Cer),它具有一个需要传递参数的构造函数,类中的数据成员有:
车型model、座位seat和车重weight,并放在保护段中;由父类私有派生出两个类,分别是JEEP类和bus类。
要求每个类都有相关数据的输出。
#include
usingnamespacestd;
classcar
{
public:
voidget()
{
cout<<"model:
";
cin>>model;
cout<<"seat:
";
cin>>seat;
cout<<"weight:
";
cin>>weight;
}
voidshow()
{
cout<<"carmodel:
"<"<"<}
protected:
charmodel;
intseat;
doubleweight;
};
classjeep:
publiccar
{
public:
voidget()
{
cout<<"model:
";
cin>>model;
cout<<"seat:
";
cin>>seat;
cout<<"weight:
";
cin>>weight;
}
voidshow()
{
cout<<"carmodel:
"<"<"<}
};
classbus:
publiccar
{
public:
voidget()
{
cout<<"model:
";
cin>>model;
cout<<"seat:
";
cin>>seat;
cout<<"weight:
";
cin>>weight;
}
voidshow()
{
cout<<"carmodel:
"<"<"<}
};
voidmain()
{
jeepa;
a.get();
a.show();
busb;
b.get();
b.show();
}
2.设计一个父亲类father、母亲类mather、子女类child,其主要数据是姓名、子女使用父亲的姓,最后输出子女的姓名和父母的姓名。
#include
#include"string"
usingnamespacestd;
classfather
{
private:
stringm;
protected:
stringx;
public:
voidgeti(){
cin>>x>>m;
}
voidshow1(){
cout<<"父亲的姓名为:
"<}
};
classmother
{
private:
stringname;
public:
voidget1(){
cin>>name;}
voidshow2(){
cout<<"母亲的姓名为:
"<};
classchild:
publicfather
{
private:
stringname;
public:
voidget2(){
cin>>name;}
voidshow3(){
cout<<"子女的姓名为:
"<};
voidmain()
{
fatherf;motherm;childc;
cout<<"请分别输入父亲的姓和名:
"<f.geti();
cout<<"请输入母亲的名字:
"<m.get1();
cout<<"请输入子女的名字:
"<c.get2();
f.show1();
m.show2();
c.show3();
}
3.编写一个程序,已有若干名学生数据,这些数据包括学号、姓名、语文成绩、英语成绩、和数学成绩,要求设计不同的成员函数求各门课程的平均分。
#include
#include
usingnamespacestd;
classstudent
{
public:
intnum;
charname[20];
intchinese;
intmath;
intenglish;
intaverage()
{
intt=(chinese+math+english)/3;
returnt;
};
};
4.建立一个简单的大学管理系统,其中有学生、教师和教辅人员。
类的继承关系如图8-3所示。
每个类定义一个相对于特定的不同的输出函数print(),输出各类的数据成员。
#include
#include"string"
usingnamespacestd;
classuni
{
private:
stringname;
public:
uni(){
name="北京邮电大学";
}
voidprint(){
cout<<"学校:
"<}
};
classstu:
publicuni{
private:
stringsname;
intxh;
public:
stu(){
sname="张三";
xh=1;
}
voidprint1(){
cout<<"学生姓名:
"<"<}
};
classtea:
publicuni{
private:
stringtname;
public:
tea(){
tname="李四";
}
voidprint2(){
cout<<"教师姓名:
"<}
};
classass:
publictea{
private:
stringaname;
public:
ass(){
aname="王五";
}
voidprint4(){
cout<<"教辅人员姓名:
"<}
};
voidmain()
{
assa;stus;
a.print();
s.print1();
a.print2();
a.print4();
图8-3编程第4题的继承关系
5.编一个程序,其中有三个类,分别为中国银行,浦发银行和招商银行,每个银行都包含一个用于存储用户存款的成员,要求用面向对象的编程方法求出用户在三个银行总的存款金额并显示出来。
#include
#include"string"
usingnamespacestd;
classzgyh
{
protected:
intmoney1;
public:
voidzgyh1(){
cin>>money1;
}
};
classpfyh{
protected:
intmoney2;
public:
voidpfyh1(){
cin>>money2;
}
};
classzsyh{
protected:
intmoney3;
public:
voidzsyh1(){
cin>>money3;
}
};
classz:
publiczgyh,publicpfyh,publiczsyh{
public:
voidshow(){
cout<<"总存款金额为:
"<}
};
voidmain()
{
zzje;
cout<<"请输入存入中国银行的金额:
"<zje.zgyh1();
cout<<"请输入存入浦发银行的金额:
"<zje.pfyh1();
cout<<"请输入存入招商银行的金额:
"<zje.zsyh1();
cout<<"总金额为:
"<zje.show();
}
2.
#include
#include
usingnamespacestd;
classfather{
public:
charxing[10];
charming[15];
voidfather(chara[10],charb[15])
{
strcpy(xing,a);
strcpy(ming,b);
};
};
classchild:
publicfather
{
};
classmother
{
};
voidmain()
{
}