在职研究生(多重继承)

题目描述

1、建立如下的类继承结构:
1)定义一个人员类CPeople,其属性(保护类型)有:姓名、性别、年龄;
2)从CPeople类派生出学生类CStudent,添加属性:学号和入学成绩;
3)从CPeople类再派生出教师类CTeacher,添加属性:职务、部门;
4)从CStudent和CTeacher类共同派生出在职研究生类CGradOnWork,添加属性:研究方向、导师;
2、分别定义以上类的构造函数、输出函数print及其他函数(如需要)。
3、在主函数中定义各种类的对象,并测试之。

输入

第一行:姓名性别年龄

第二行:学号成绩

第三行:职务部门

第四行:研究方向导师

输出

第一行:People:

第二行及以后各行:格式见Sample

输入样例

wang-li m 23
2012100365 92.5
assistant computer
robot zhao-jun

输出样例

People:
Name: wang-li
Sex: m
Age: 23

Student:
Name: wang-li
Sex: m
Age: 23
No.: 2012100365
Score: 92.5

Teacher:
Name: wang-li
Sex: m
Age: 23
Position: assistant
Department: computer

GradOnWork:
Name: wang-li
Sex: m
Age: 23
No.: 2012100365
Score: 92.5
Position: assistant
Department: computer
Direction: robot
Tutor: zhao-jun

代码

#include<iostream>
using namespace std;
class CPeople{
	protected:
		string name;
		char Sex;
		int Age;
	public:
		CPeople(){}
		CPeople(string n,char s,int y):name(n),Sex(s),Age(y){
		}
		void print()
		{
			cout<<"Name: "<<name<<endl;
			cout<<"Sex: "<<Sex<<endl;
			cout<<"Age: "<<Age<<endl;
		}	
};
class CStudent:virtual public CPeople{
	private:
		string number;
		double score;
	public:
		CStudent(){}
		CStudent(string num,double sc):number(num),score(sc){
		}
		void print()
		{
		cout<<"No.: "<<number<<endl;
		cout<<"Score: "<<score<<endl;
		}
};
class CTeacher:virtual public CPeople{
	private:
		string Position;
		string Department;
	public:
		CTeacher(){}
		CTeacher(string p,string d):Position(p),Department(d){
		}
		void print()
		{
		cout<<"Position: "<<Position<<endl;
		cout<<"Department: "<<Department<<endl;		
		}
};
class CGradOnWork:public CStudent,public CTeacher{
	private:
		string Direction;
		string Tutor;
	public:
		CGradOnWork(){}
		CGradOnWork(string di,string t):Direction(di),Tutor(t){
		}
		void print()
		{
		cout<<"Direction: "<<Direction<<endl;
		cout<<"Tutor: "<<Tutor;		
		}
};
int main()
{
	
	string n;
	char s;
	int y;
	cin>>n>>s>>y;
	CPeople people(n,s,y);
	cout<<"People:"<<endl;
	people.print();
	cout<<endl;
	
	string num;
	double sc;
	cin>>num>>sc;
	CStudent student(num,sc);
	cout<<"Student:"<<endl;
	people.print();
	student.print();
	cout<<endl;
	
	string p;
	string d;
	cin>>p>>d;
	CTeacher teacher(p,d);
	cout<<"Teacher:"<<endl;
	people.print();
	teacher.print();
	cout<<endl;
	
	string di;
	string t;
	cin>>di>>t;
	CGradOnWork grad(di,t);
	cout<<"GradOnWork:"<<endl;
	people.print();
	student.print();
	teacher.print();
	grad.print();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值