多重继承教师类和干部类

来源:互联网 发布:licecap mac下载 编辑:程序博客网 时间:2024/04/29 17:10
/* Copyright (c) 2012, 烟台大学计算机学院* All rights reserved.* 文件名称:text.cpp* 作    者:  胡颖*完成日期:2013年6月4日* 版 本 号:v1.0**输入描述:*问题描述:分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。(4)在类体中声明成员函数,在类外定义成员函数。(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。* 程序输出:* 问题分析:* 算法设计:略*/#include <iostream>using namespace std;//定义Teacher(教师)类class Teacher{public:    Teacher(string nam,int a,char s, string ad,string tit,string tele);    void display();protected:       //Teacher类中包含姓名、年龄、性别、地址、职称、电话数据成员    string name;    int age;    char sex;    string adress;    string title;    string telephone;};Teacher::Teacher(string nam,int a,char s, string ad,string tit,string tele):    name(nam),age(a),sex(s),adress(ad),title(tit),telephone(tele) {}void Teacher::display(){    cout<<"name:"<<name<<endl;    cout<<"age:"<<age<<endl;    cout<<"sex:"<<sex<<endl;    cout<<"adress:"<<adress<<endl;    cout<<"title:"<<title<<endl;    cout<<"telephone:"<<telephone<<endl;}//定义Cadre(干部)类class Cadre{public:    Cadre(string nam,int a,char s, string ad,string p,string tele);    void display();protected:      //Cadre类中还包含数据成员post(职务)    string name;    int age;    char sex;    string adress;    string post;    string telephone;};Cadre::Cadre(string nam,int a,char s, string ad,string p,string tele):    name(nam),age(a),sex(s),adress(ad),post(p),telephone(tele) {}void Cadre::display(){    cout<<"name:"<<name<<endl;    cout<<"age:"<<age<<endl;    cout<<"sex:"<<sex<<endl;    cout<<"adress:"<<adress<<endl;    cout<<"post:"<<post<<endl;    cout<<"telephone:"<<telephone<<endl;}//派生Teacher_Cadre(教师兼干部)类class Teacher_Cadre:public Teacher,public Cadre{public:    Teacher_Cadre(string nam,int a,char s, string ad,string tit,string p,string tele,float w);    void show();private:    //Teacher_Cadre类中还包含数据成员wages(工资).    float wages;};Teacher_Cadre::Teacher_Cadre(string nam,int a,char s, string ad,string tit,string p,string tele,float w):    Teacher(nam,a,s,ad,tit,tele),Cadre(nam,a,s,ad,p,tele),wages(w) {}void Teacher_Cadre::show(){    Teacher::display();    cout<<"post:"<<Cadre::post<<endl;    cout<<"wages:"<<wages<<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;}

运行结果:
原创粉丝点击