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

发布时间:2019-07-29 16:19:20

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

1.     在两个基类中都包含姓名、年龄、性别、电话等数据成员。

2.     在Teacher(教师)类中还包含数据成员title(职称),在Cadre(干部)类还包含数据成员post(职务),在Teacher_Cadre(教师兼干部)类中还包含数据成员wage(工资)。

3.     对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

4.     在类体中声明成员函数,在类外定义成员函数。

5.     在派生类Teacher_Cadre(教师兼干部)类的成员函数show中调用Teacher(教师)类的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务和工资。

输入输出示例:

姓名:Wang-li

年龄:50

性别:f

职称:prof.

地址:135 Beijing Road,Shanghai

电话:(021)61234567

职务:president

工资:1534.5


推荐回答

这个按教程中类的定义及继承写下,没难度的(就是有点工作量)

以下是类似的参考,若能理解 ,改下就可以

#include<iostream>

using namespace std;

class Preson

{

 public:

  void setpramework(int age,string name,int tall);

  void display();

  ~Preson(){cout<<"I am a good student!"<<endl;}

 private:

  int m_age;

  string m_name;

  int m_tall;

};

void Preson::setpramework(int age,string name,int tall){m_age=age,m_name=name,m_tall=tall;}

void Preson::display(){cout<<"年龄:"<<m_age<<endl<<"姓名:"<<m_name<<endl<<"身高:"<<m_tall<<endl;

}

class Student: virtual public Preson

{

 public:

  void student(int ID,int grade,int score);

  void display();

  ~Student(){cout<<"I am ::"<<endl;}

 private:

  int m_ID;

  int m_grade;

  int m_score;

};

void Student::student(int ID,int grade,int score){m_ID=ID,m_grade=grade,m_score=score;}

void Student::display(){cout<<"学号:"<<m_ID<<endl<<"年级:"<<m_grade<<endl<<"成绩:"<<m_score<<endl;}

class Teacher:virtual public Preson

{

 public:

  void teacher(int id,string job,string mclass,int perior);

  void display();

  ~Teacher(){cout<<"Teacher::"<<endl;}

 private:

  int m_id;

  string m_job;

  string m_class;

  int m_perior;

};

void Teacher::teacher(int id,string job,string mclass,int perior){m_id=id,m_job=job,m_class=mclass,m_perior=perior;}

void Teacher::display(){cout<<"工号:"<<m_id<<endl<<"职称:"<<m_job<<endl<<"课程:"<<m_class<<endl<<"学时:"<<m_perior<<endl;}

class TA:public Student,public Teacher

{

  public:

 void wages(int wages);

 void display();

 ~TA(){cout<<"Very money!"<<endl;}

 //void display(){Preson::setpramework(),Student::student(),Teacher::teacher();}

  private:

   int m_wages;

};

void TA::wages(int wages){m_wages=wages;}

void TA::display(){cout<<"工资:"<<m_wages<<endl,Preson::display(),Student::display(),Teacher::display();}

int main()

{

 TA ta;

 ta.setpramework(18,"lihua",180);

 ta.student(10086,9,100);

 ta.teacher(110,"jisuanji","wanggong",12);

 ta.wages(8000);

 ta.display();

 ta.display();

 ta.display();

    return 0;

}

以上问题属网友观点,不代表本站立场,仅供参考!