当前位置:文档之家› 实验4 继承与派生-程序

实验4 继承与派生-程序

实验4 继承与派生---参考程序二、实验内容1.定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。

#include<iostream>#include<string>using namespace std;class Person{public:Person(string s1,int s2,string s3): name(s1),age(s2),gender(s3){}void show(){ cout<<name<<"\t"<<age<<"\t"<<gender<<"\t"; }private:string name;int age;string gender;};class Teacher: public Person{public:Teacher(string s1,int s2,string s3,string s4,string s5,double s6):Person(s1,s2,s3),num(s4),title(s5),salary(s6){}void show(){// Person::show();cout<<num<<"\t"<<title<<"\t"<<salary<<endl; }private:string num;string title;double salary;};class Student:public Person{public:Student(string s1,int s2,string s3,string s4,string s5,string s6,double s7):Person(s1,s2,s3),num(s4),Class(s5),major(s6),score(s7){}void show(){ Person::show();cout<<num<<"\t"<<Class<<"\t"<<major<<"\t"<<score<<endl; } private:string num;string Class;string major;double score;};int main(void){Teacher T("JSR",34,"female","23435","professor",10000);Student S("ZJ",19,"male","36","BX1108","Communication",88);cout<<"姓名"<<"\t"<<"年龄"<<"\t"<<"性别"<<"\t"<<"工号"<<"\t"<<"职称"<<"\t\t"<<"薪水"<<endl;T.Person::show();T.show();cout<<"姓名"<<"\t"<<"年龄"<<"\t"<<"性别"<<"\t"<<"学号"<<"\t"<<"班级"<<"\t\t"<<"专业"<<"\t"<<"成绩"<<endl;S.show();return 0;}2.设计一个圆类Circle和一个桌子类Table,再由它们共同派生出圆桌类RoundTable,要求输出一个圆桌的高度、面积和颜色等数据。

#include<iostream>#include<string>using namespace std;class Circle{public:Circle(double r):radius(r){}double area(){return 3.14159*radius*radius;}private:double radius;};class Table{public:Table(string c,double h):color(c),height(h){}void show(){ cout<<"The Table's color is "<<color<<" ,height is "<<height;}private:string color;double height;};class Roundtable: public Circle,public Table{public:Roundtable(double r,string c,double h):Circle(r),Table(c,h){}};int main(void){Roundtable R(4,"blue",3);R.show();cout<<" ,area is "<<R.area()<<endl;return 0;}3. 分别定义教师类Teacher和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。

要求:#include<string>#include <iostream>using namespace std;class Teacher{public:Teacher(string nam, int a, char s, string tit, string ad, string t);void display();protected:string name; //姓名int age; //年龄char sex; //性别string title; //职称string addr; //地址string tel; //电话};Teacher::Teacher(string nam, int a, char s, string tit, string ad, string t): name(nam), age(a), sex(s), title(tit), addr(ad), tel(t){ }void Teacher::display(){ cout << "name:" << name << endl;cout << "age:" << age << endl;cout << "sex:" << sex << endl;cout << "title:" << title << endl;cout << "address:" << addr << endl;cout << "tel:" << tel << endl;}class Cadre{public:Cadre(string nam, int a, char s, string p, string ad, string t);void display();protected:string name; //姓名int age; //年龄char sex; //性别string post; //职务string addr; //地址string tel; //电话};Cadre::Cadre(string nam, int a, char s, string p, string ad, string t): name(nam), age(a), sex(s), post(p), addr(ad), tel(t){}void Cadre::display(){ cout << "name:" << name << endl;cout << "age:" << age << endl;cout << "sex:" << sex << endl;cout << "post:" << post << endl;cout << "address:" << addr << endl;cout << "tel:" << tel << endl;}class Teacher_Cadre: public Teacher, public Cadre{public:Teacher_Cadre(string nam, int a, char s, string tit, string p, string ad, string t, float w);void show( );private:float wage; //工资};Teacher_Cadre::Teacher_Cadre(string nam, int a, char s, string t, string p, string ad, string tel,float w): Teacher(nam, a, s, t, ad, tel), Cadre(nam, a, s, p, ad, tel), wage(w) {}void Teacher_Cadre::show( ){ Teacher::display();cout << "post:" << Cadre::post << endl;cout << "wages:" << wage << endl;}int main( ){Teacher_Cadre te_ca("Wang-li", 50, 'f', "prof.", "president"," 135 Beijing Road, Shanghai", "(021)61234567", 1534.5);te_ca.show( );return 0;}4.定义一个基类汽车类Car,有型号、颜色、发动机功率、车速、重量、车牌号,再由汽车类派生出客车类Bus和货车类Wagon,客车类增加客车座位数、客运公司,货车类增加载货重量、货运公司。

相关主题