OJ 继承与组合

来源:互联网 发布:淘宝哪家卖外设保真 编辑:程序博客网 时间:2024/04/27 23:55
已知类如下:
(1) BirthDate(生日类) 含有:year,month,day 等数据成员
(2) Teacher(教师类)含有:num,name,sex 等数据成员
(3) Professor(教授类)含有:教师类和生日类的数据成员
要求:
(1)通过对Teacher和BirthDate使用继承和组合的方式设计Professor
(2)定义Professor类对象prof,并给出所有数据的初值
(3)修改prof的生日数据
(4)输出prof的全部最新数据

Input

 num,name,sex,year,month,day 和修改后的year,month,day

Output

 num,name,sex,year,month,day 

#include <iostream>#include <string>using namespace std;class BirthDate{public:    BirthDate(int,int,int);    void display();    void setbirthday(int,int,int);private:    int year;    int month;    int day;};class Teacher{public:    Teacher(int,string,char);    void display();private:    int num;    string name;    char sex;};class Professor:public Teacher{public:    Professor(int,string,char,BirthDate);    void display();    void setbirthday(int,int,int);private:    BirthDate birthday;};BirthDate::BirthDate(int y,int m,int d):year(y),month(m),day(d){}void BirthDate::display(){    cout<<"birthday:"<<year<<"/"<<month<<"/"<<day<<endl;}void BirthDate::setbirthday(int y,int m,int d){    year=y;    month=m;    day=d;}Teacher::Teacher(int n,string nam,char s):num(n),name(nam),sex(s){}void Teacher::display(){    cout<<"num:"<<num<<endl;    cout<<"name:"<<name<<endl;    cout<<"sex:"<<sex<<endl;}Professor::Professor(int n,string nam,char s,BirthDate f):Teacher(n,nam,s),birthday(f){}void Professor::display(){    Teacher::display();    birthday.display();}void Professor::setbirthday(int y,int m,int d){  birthday.setbirthday(y,m,d);}int main(){    int num;    string name;    char sex;    int year,month,day;    cin>>num>>name>>sex;    cin>>year>>month>>day;    Professor prof(num,name,sex,BirthDate(year,month,day));    cin>>year>>month>>day;    prof.setbirthday(year,month,day);    prof.display();    return 0;}


运行结果:

 

这个继承与组合 简直了

0 0