6-7 学生类(虚基类)
分数 10
全屏浏览
切换布局
作者 刘利
单位 惠州学院
类Data_rec是虚基类,它包含了所有派生类共有的数据成员,职工类Employee和学生类Student为虚基类Data_rec的派生类,在职大学生类E_Student是职工类Employee和学生类Student的共同派生类。如下图所示:
现已定义Data_rec类,请根据main及测试样例输入输出,定义Student,Employee和E_Student类。
函数接口定义:
class Data_rec{
public:
Data_rec(string name1,char sex1,int age1)
{
name=name1;
sex=sex1;
age=age1;
}
protected:
string name;
char sex;
int age;
};
裁判测试程序样例:
#include <iostream>
#include <string>
using namespace std;
class Data_rec{
public:
Data_rec(string name1,char sex1,int age1)
{
name=name1;
sex=sex1;
age=age1;
}
void printd()
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
}
protected:
string name;
char sex;
int age;
};
/* 请在这里填写答案 */
int main()
{
string name,major,dept;
char sex;
int age;
double score,salary;
cin>>name>>sex>>age>>major>>score>>dept>>salary;
//1.测试Student
Student s(name,sex,age,major,score);
s.prints();
cout<<endl;
//2.测试Employee
Employee e(name,sex,age,dept,salary);
e.printe();
cout<<endl;
//3.测试E_Student
E_Student my_E_Student(name,sex,age,major,score,dept,salary);
my_E_Student.print();
cout<<endl;
//4.测试虚继承
my_E_Student.printd();
return 0;
}
输入样例:
张大明 f 28 计算机 95 教务处 6000
输出样例:
name:张大明
sex:f
age:28
major:计算机
score:95
name:张大明
sex:f
age:28
dept:教务处
salary:6000
name:张大明
sex:f
age:28
major:计算机
score:95
dept:教务处
salary:6000
name:张大明
sex:f
age:28
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
class Student:virtual public Data_rec{
protected:
string major;
double score;
public:
Student(string name,char sex,int age,string major,double score):Data_rec(name,sex,age){
this->major = major;
this->score = score;
}
void prints(){
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
cout<<"major:"<<major<<endl;
cout<<"score:"<<score<<endl;
}
};
class Employee:virtual public Data_rec{
protected:
string dept;
double salary;
public:
Employee(string name,char sex,int age,string dept,double salary):Data_rec(name,sex,age){
this->dept = dept;
this->salary = salary;
}
void printe(){
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
cout<<"dept:"<<dept<<endl;
cout<<"salary:"<<salary<<endl;
}
};
class E_Student:public Student,public Employee{
public:
E_Student(string name,char sex,int age,string major,double score,string dept,double salary):Data_rec(name,sex,age),Student(name,sex,age,major,score),Employee(name,sex,age,dept,salary){}
void print(){
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
cout<<"major:"<<major<<endl;
cout<<"score:"<<score<<endl;
cout<<"dept:"<<dept<<endl;
cout<<"salary:"<<salary<<endl;
}
};