您的位置:首页 > 编程语言 > C语言/C++

c++习题1_F_继承与组合

2014-06-13 22:37 357 查看
/*
*作者:lws
*完成时间:2014/6/13
*描述:通过对Teacher和BirthDate使用继承和组合的方式设计Professor
*输入:2001 Huang m 1970 1 1 1994 5 26
*输出:num:2001 name:Huang sex:m birthday:1994/5/26
*/
#include <iostream>
#include <string>
using namespace std;
class BirthDate //生日类
{
public:
BirthDate(int y,int m,int d):year(y),month(m),day(d){}
void SetBirthDay(int y,int m,int d)
{
year=y; month=m; day=d;
}
friend ostream& operator<<(ostream& out,BirthDate &p)//运算符重载<<
{
out<<" birthday:"<<p.year<<"/"<<p.month<<"/"<<p.day;
return out;
}
private:
int year;
int month;
int day;
};
class Teacher //教师类
{
public:
Teacher(int n,string na,char s):num(n),name(na),sex(s){}
friend ostream& operator<<(ostream &out,Teacher &p)
{
out<<"num:"<<p.num<<" name:"<<p.name<<" sex:"<<p.sex;
return out;
}
protected:
int num;
string name;
char sex;
};
class Professor:public Teacher //教授类
{
public:
Professor(int n,string na,char s,BirthDate bir):Teacher(n,na,s),birthday(bir){}
void SetBirthDay(int y,int m,int d)
{
birthday.SetBirthDay(y,m,d);//调用BirthDate的成员函数重设时间
}
friend ostream& operator<<(ostream& out,Professor &p)
{
out<<"num:"<<p.num<<" name:"<<p.name<<" sex:"<<p.sex<<p.birthday;
return out;
}
private:
BirthDate birthday;
};
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);
cout<<prof<<endl;
return 0;
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: