多重继承的应用《教师类和干部类》

来源:互联网 发布:python游戏开发百度云 编辑:程序博客网 时间:2024/06/02 08:54

在上一篇博客中介绍了多重继承,虽然多重继承在实际的运用中用的不多,但是还是通过几个例子说明多重继承

实例:教师类和干部类派生出教师干部类

分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求: 

(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。 
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。 
(4)在类体中声明成员函数,在类外定义成员函数。 
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

程序继承图



程序代码

#include <iostream>#include <string>using namespace std;class Teacher//教师类{public:    //构造函数    Teacher(string Name, int Age, char Sex, string Addr, int Tel, string Title);    void display();//显示教师信息protected:    string name;//姓名    int age;//年龄    char sex;//性别    string addr;//地址    int tel;//电话    string title;//职称  };//构造函数Teacher::Teacher(string Name, int Age, char Sex, string Addr, int Tel, string Title):    name(Name), age(Age), sex(Sex), addr(Addr), tel(Tel), title(Title){}void Teacher::display()//显示教师信息{    cout<<"姓名:"<<name<<endl;    cout<<"年龄:"<<age<<endl;    cout<<"性别:"<<sex<<endl;    cout<<"地址"<<addr<<endl;    cout<<"电话:"<<tel<<endl;    cout<<"职称:"<<title<<endl;}class Cadre//干部类{public:   //构造函数    Cadre(string Name, int Age, char Sex, string Addr, int Tel, string Pos);    void show1();//显示干部信息protected:    string name;//姓名    int age;//年龄    char sex;//性别    string addr;//地址    int tel;//电话    string post;//职务};//构造函数Cadre::Cadre(string Name, int Age, char Sex, string Addr, int Tel, string Post):    name(Name), age(Age), sex(Sex), addr(Addr), tel(Tel), post(Post){}//显示干部信息void Cadre::show1(){    cout<<"姓名:"<<name<<endl;    cout<<"年龄:"<<age<<endl;    cout<<"性别:"<<sex<<endl;    cout<<"地址"<<addr<<endl;    cout<<"电话:"<<tel<<endl;    cout<<"职务:"<<post<<endl;}//Teacher类和Cadre类派生出新的类Teacher_Cadre类class Teacher_Cadre : public Teacher, public Cadre{public:    //构造函数    Teacher_Cadre(string Name, int Age, char Sex, string Addr, int Tel, string Title, string Post, double Wages);    void show();//显示信息protected:    double wages;//工资};//构造函数Teacher_Cadre::Teacher_Cadre(string Name, int Age, char Sex, string Addr, int Tel, string Title, string Post, double Wages):Teacher(Name, Age, Sex, Addr, Tel, Title), Cadre(Name, Age, Sex, Addr, Tel, Post), wages(Wages){}//显示Teacher_Cadre类中的信息void Teacher_Cadre::show(){    display();//调用Teacher类中的display()函数显示信息    cout<<"职务:"<<Cadre::post<<endl;//输出职务    cout<<"工资:"<<wages<<endl;//输出工资}void main(){    Teacher_Cadre T_C("王丽", 50, 'f', "135 Beijing Road,Shanghai", 02161234567,  "president", "prof.", 1534.5);    T_C.show();    system("pause");}


执行结果
0 0