【继承练习】

①声明并实现一个名为Person的基类,Person类有保护数据成员name(姓名,string类型)、sex(性别,char类型,'M'表示男,'F'表示女)。以及有参构造函数,将姓名、性别设置为给定的参数;成员函数print,输出姓名和性别。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

②从Person类派生出Student类,Student类有私有数据成员status(状态,string类型),表示年级(FRESHMAN、SOPHOMORE、JUNIOR、SENIOR),表示大一、大二、大三、大四学生。以及有参构造函数,将姓名、性别、状态设置为给定的参数;成员函数print,print函数输出姓名、性别和状态。
③定义MyDate类,它包含私有数据成员year、month和day以及带默认参数的有参构造函数,年、月、日的默认参数值分别为1900、1、1;成员函数print,输出年、月、日。
④从Person类派生出Employee类,Employee类有保护数据成员salary(薪水,int类型)、dateHired(雇佣日期),dataHired的类型是MyDate。以及有参构造函数,将姓名、性别、薪水和雇佣日期设置为给定的参数;成员函数print,输出姓名、性别、薪水和雇佣日期。
⑤从Employee类派生出Faculty类,Faculty类有私有数据成员rank(级别,string类型),有(PROFESSOR、ASSOCIATE_PROFESSOR、LECTURER),表示教授、副教授、讲师。以及有参构造函数,将姓名、性别、薪水、雇佣日期和级别设置为给定的参数;成员函数print,输出姓名、性别、薪水、雇佣日期和级别。
⑥从Employee类派生出Staff类,Staff类有私有数据成员headship(职务,string类型),有(PRESIDENT、DEAN、DEPARTMENT_CHAIRMAN),表示校长、院长、系主任。以及有参构造函数,将姓名、性别、薪水、雇佣日期和职务设置为给定的参数;成员函数print,输出姓名、性别、薪水、雇佣日期和职务。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

 ‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输入输出示例

逐个输入:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

Person对象的构造信息‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

Student的构造信息‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

Data的构造信息‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

Employee的构造信息‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

Faculty的构造信息‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

Staff的构造信息‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

其中雇佣日期都使用相同的日期,所以构造一个对象即可‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输入输出
示例 1

ZhangSan

M

LiSi

F

FRESHMAN

2012

10

31

WangWu

M

5000

LiuLiu

M

10000

PROFESSOR

QianQi

M

8000

DEPARTMENT_CHAIRMAN

Name:ZhangSan,  Sex:M

Name:LiSi,  Sex:F

FRESHMAN

Name:WangWu,  Sex:M

Salary:5000,  Hire date:2012-10-31

Name:LiuLiu,  Sex:M

Salary:10000,  Hire date:2012-10-31

PROFESSOR

Name:QianQi,  Sex:M 

Salary:8000,  Hire date:2012-10-31

DEPARTMENT_CHAIRMAN

//注意:输出要一一对应,好好审题
#include<iostream>
#include<string>
using namespace std;
class Person {
protected:
    string name;
    char sex;
public:
    Person(string na, char se) {
        name = na;
        sex = se;
    }
    void print() {
        cout << "Name:" << name << ", Sex:" << sex << endl;//输出姓名和性别
    }
};
class Student :public Person {
    string status;
public:
    Student(string na, char se, string sta) :Person(na, se) {
        status = sta;
    }
    void print();
};
void Student::print() //输出姓名,性别和年级
{
    Person::print();
    cout << status << endl;
}
class MyDate {
    int year, month, day;
public:
    MyDate(int y = 1900, int m = 1, int d = 1) {
        year = y;
        month = m;
        day = d;
    }
    void print() {
        cout << ", Hire date:" << year << "-" << month << "-" << day<<endl;
    }
};
class Employee :public Person {
protected:
    int salary;
    MyDate dateHired;
public:
    Employee(string na1, char se1, int y1, int m1, int d1, int sa) :Person(na1, se1), dateHired(y1, m1, d1) {
        salary = sa;
    }
    void print()  //输出姓名,性别,薪水和雇佣日期
    {
        Person::print();
        cout << "Salary:" << salary; 
        dateHired.print() ;
    }
};
class Faculty :public Employee {
    string rank;
public:
    Faculty(string na2, char se2, int y2, int m2, int d2, int sa1, string ra) :Employee(na2, se2, y2, m2, d2, sa1) {
        rank = ra;
    }
    void print()//输出姓名,性别,薪水、雇佣日期和级别
    {
        Employee::print();
        cout << rank << endl;
    }
};
class Staff :public Employee {
    string headship;
public:
    Staff(string na3, char se3, int y3, int m3, int d3, int sa2, string he) :Employee(na3, se3, y3, m3, d3, sa2) {
        headship = he;
    }
    void print() //输出姓名、性别、薪水、雇佣日期和职务设置
    {
        Employee::print();
        cout << headship << endl;
    }
};
int main() {
    string na1, na2, na3, na4, na5, sta, ra, he;
    char se1, se2, se3, se4, se5;
    int y, m, d, sa1, sa2, sa3;
    cin >> na1 >> se1 >> na2 >> se2 >> sta >> y >> m >> d >> na3 >> se3 >> sa1 >> na4 >> se4 >> sa2 >> ra >> na5 >> se5 >> sa3 >> he;
    Person A(na1, se1);
    A.print();//输出姓名和性别
    Student B(na2, se2, sta);
    B.print();//输出姓名,性别和年级
    Employee C(na3, se3, y, m, d,sa1);
    C.print();//输出姓名,性别,薪水和雇佣日期
    Faculty D(na4, se4, y, m, d,sa2,ra);
    D.print();//输出姓名,性别,薪水、雇佣日期和级别
    Staff E(na5, se5, y, m, d,sa3,he);
    E.print();//输出姓名、性别、薪水、雇佣日期和职务设置
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值