C++实验5

一、问题及代码

分别定义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 Person  
{  
    string name;  // 姓名  
    int age;      // 年龄  
public:  
    Person() {}  
    void setname(string na)  
    {  
        name=na;  
    }  
    void setage(int a)  
    {  
        age=a;  
    }  
    string getname()  
    {  
        return name;  
    }  
    int getage()  
    {  
        return age;  
    }  
};  
class Leader:  virtual public Person    // (1)  
{  
    string job;     // 职务  
    string dep;     // 部门  
public:  
    Leader() { }  
    void setjob(string jb)  
    {  
        job=jb;  
    }  
    void setdep(char dp[])  
    {  
        dep=dp;        
    }  
    string getjob()  
    {  
        return job;  
    }  
    string getdep()  
    {  
        return dep;  
    }  
};  
class Engineer:  virtual public Person     // (2)  
{  
    string major;     // 专业  
    string prof;      // 职称  
public:  
    Engineer () { }  
    void setmajor(string maj)  
    {  
        major=maj;  
    }  
    void setprof(string pf)  
    {  
        prof=pf;  
    }  
    string getmajor()  
    {  
        return major;  
    }  
    string getprof()  
    {  
        return prof;  
    }  
};  
class chairman: public Leader,public Engineer { } ;// (3)  
int main()  
{  
    chairman c;  
    c.setname("张三");  
    c.setage(42);  
    c.setjob("处长");  
    c.setdep("技术处");  
    c.setmajor("轮机设计");  
    c.setprof("高级工程师");  
    cout <<c.getname() << "," <<c.getage()<<" 岁,担任" <<c.getdep() <<c.getjob() <<endl;  
    cout <<c.getprof() << ",从事" << c.getmajor()<< "专业" << "。 " << endl;  
    return 0;  
}  
二、运行结果



三、实验总结

多继承的应用

四、心得体会

类的分类要分条,清晰简明


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值