C++程序设计实验四类的继承与派生Word格式文档下载.docx
《C++程序设计实验四类的继承与派生Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验四类的继承与派生Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
CDate();
CDate(intx,intn,inte):
x(x),n(n),e(e){}
};
classCPerson{
stringname,sex;
intage;
CPerson();
CPerson(stringname,intage,stringsex):
name(name),age(age),sex(sex){}
voidPrint()
{
cout<
<
name<
"
"
age<
sex<
endl;
}
classCStudent:
virtualpublicCPerson{
public:
stringid;
CDateschool;
intgrade;
CStudent();
CStudent(stringname,intage,stringsex,stringid,CDateschool,intgrade):
CPerson(name,age,sex),id(id),school(school),grade(grade){}
id<
school.x<
-"
school.n<
school.e<
grade<
classCTeacher:
stringduty,depart;
CDatework;
CTeacher();
CTeacher(stringname,intage,stringsex,CDatework,stringduty,stringdepart):
CPerson(name,age,sex),duty(duty),depart(depart),work(work){}
voidPrint()
duty<
depart<
work.x<
work.n<
work.e<
classCGraduate:
publicCStudent{
stringstudy,tutor;
CGraduate();
CGraduate(stringname,intage,stringsex,stringid,CDateschool,intgrade,stringstudy,stringtutor):
CStudent(name,age,sex,id,school,grade),CPerson(name,age,sex),study(study),tutor(tutor){}
study<
tutor<
classCGradOnWork:
publicCGraduate,publicCTeacher{
CGradOnWork();
CGradOnWork(stringname,intage,stringsex,stringduty,stringdepart,CDatework,stringid,CDateschool,intgrade,stringstudy,stringtutor):
CTeacher(name,age,sex,work,duty,depart),CGraduate(name,age,sex,id,school,grade,study,tutor),CPerson(name,age,sex),name(name),age(age),sex(sex){}
intmain()
{
CGradonWorkgradonWork("
tzcer"
"
男"
33,"
15"
2003"
335,"
computer"
tangmin"
jsj"
sxxy"
2002-8"
);
s1.Print();
s1.CTeacher:
:
Print();
s1.CGraduate:
s1.CStudent:
s1.CPerson:
}
8、
cmath>
classPoint
protected:
doublex,y;
Point(){x=0;
y=0;
Point(doublex0,doubley0){x=x0;
y=y0;
}
doubleget_x(){returnx;
doubleget_y(){returny;
friendostream&
operator<
(ostream&
out,Point&
d);
ostream&
operator<
(ostream&
d)
returnout<
Point:
("
<
d.x<
d.y<
)"
endl;
classCircle:
publicPoint
doubler;
Circle(){r=0;
Circle(doubler0):
r(r0){}
voidset_r(doubler1){r=r1;
doubleget_r(){returnr;
doublearea(){return3.14159*r*r;
out,Circle&
r);
out,Circle&
r)
r:
r.get_r()<
endl<
area:
r.area()<
classCylinder:
publicCircle
private:
doubleh;
Cylinder(){h=0;
Cylinder(doubler0,doubleh0):
Circle(r0),h(h0){}
voidset_h(doubleh1){h=h1;
doubleget_h(){returnh;
doublearea(){return2*3.14159*r*h+2*3.14159*r*r;
doublevolume(){returnCircle:
area()*h;
out,Cylinder&
h);
out,Cylinder&
h)
h:
h.get_h()<
h.area()<
volume:
h.volume()<
Pointps(-2,5);
cout<
ps;
Circleo
(2);
o;
Cylinderh(2,4);
h;
system("
pause"
return0;
运行的效果如下:
9、#include<
classbuilding
protected:
stringname;
intfloors;
floatareas;
building(string,int,float);
voidprint();
building:
building(stringq,intm,floats)
name=q;
floors=m;
areas=s;
voidbuilding:
print()
name:
floors:
floors<
areas<
classhouse:
publicbuilding
house(stringq,intm,floats,inti,intj):
building(q,m,s)
rooms=i;
balcony=j;
private:
introoms;
intbalcony;
voidhouse:
areas:
rooms:
rooms<
balcony:
balcony<
classoffice:
office(stringq,intm,floats,inta,intb):
offices=a;
meetingrooms=b;
intoffices;
intmeetingrooms;
voidoffice:
offices:
offices<
meetingrooms:
meetingrooms<
houseq1("
住宅"
8,520,20,17);
officeq2("
办公室"
26,530,5,6);
q1.print();
q2.print();
10、#include<
classcomFinal{
charname[20];
intEnglish,Chinese,Math,Total;
floataverage;
comFinal(char*n,intEng,intChi,intMat);
comFinal(){};
~comFinal(){};
char*getName(){returnname;
intgetEng(){returnEnglish;
intgetChi(){returnChinese;
intgetMat(){returnMath;
voidsetEng(intx){English=x;
voidsetChi(intx){Chinese=x;
voidsetMat(intx){Math=x;
intgetTotal(){returnEnglish+Chinese+Math;
floatgetAverage(){return(float)((English+Chinese+Math)/3);
voidshow();
comFinal:
comFinal(char*n,intEng,intChi,intMat){
English=Eng;
Chinese=Chi;
Math=Mat;
strcpy(name,n);
voidcomFinal:
show(){
cout<
学生姓名:
getName()<
英语成绩:
getEng()<
语文成绩:
getChi()<
数学成绩:
getMat()<
基础分总评:
getTotal()<
基础课平均成绩:
getAverage()<
classaccount:
publiccomFinal{
intaccoun;
intecon;
intmajtotal;
floatmajave;
account(char*n,intEng,intChi,intMat,intacc,inteco);
account(){};
intgetmajtotal(){returnecon+accoun;
floatgetmajave(){returnfloat((accoun+econ)/2);
intgetaccount(){returnaccoun;
intgetecon(){returnaccoun;
voidsetaccount(intx){accoun=x;
voidsetecon(intx){econ=x;
account:
account(char*n,intEng,intChi,intMat,intacc,inteco):
comFinal(n,Eng,Chi,Mat){
econ=eco;
accoun=acc;
voidaccount:
show();
会计学成绩:
accoun<
经济学成绩:
econ<
总分:
getTotal()+accoun+econ<
classchemistry:
intchemistr;
intanaly;
intmajtatal;
chemistry(char*n,intEng,intChi,intMat,intchem,intanal);
chemistry(){};
intgetmajtotal(){returnanaly+chemistr;
floatgetmajave(){returnfloat((chemistr+analy)/2);
intgetche(){returnchemistr;
intgetanl(){returnanaly;
voidsetche(intx){chemistr=x;
voidsetanl(intx){analy=x;
chemistry:
chemistry(char*n,intEng,intChi,intMat,intchem,intanal):
comFinal(n,Eng,Chi,Mat){chemistr=chem;
analy=anal;
voidchemistry:
有机化学成绩:
chemistr<
化学分析成绩:
analy<
getTotal()+chemistr+analy<
accounta1("
cz"
90,80,90,80,90);
chemistryc1("
zc"
80,90,80,90,80);
a1.show();
---------------------------"
c1.setanl(100);
c1.show();
运行的效果如下图所示:
实验心得:
本次实验用了C++函数定义函数和函数重载,以及相关类的知识点,同时得掌握使用debug进行对函数的调试。
相比之前学的C语言来说这个和之前还是有些区别的,接下来应该多花些时间学好该门课程。
教师签名: