从people(人员)类派生出student(学生)类 添加属性:班号char classNO[7];从people类派生出teacher(教师)类, 添加属性:职务char principalship[11]、部门char department[21]。 从student类中派生graduate(研究生)类,添加属性:专业char subject[21]、 导师char teacher_adviser[21];从graduate类和teacher类派生出TA(助教生)类, 注意虚基类的使用。重载相应的成员函数
时间: 2023-06-08 19:05:26 浏览: 133
感谢您的提问,以下是回答:
首先,您的问题是关于面向对象编程的继承和派生,需要进行类的设计和实现。我将基于您提供的要求给出相应的代码示例,供您参考:
```
#include <iostream>
using namespace std;
// 人员类
class People{
public:
char name[21]; // 姓名
int age; // 年龄
};
// 学生类
class Student: public People{
public:
char classNO[7]; // 班号
};
// 教师类
class Teacher: public People{
public:
char principalship[11]; // 职务
char department[21]; // 部门
};
// 研究生类
class Graduate: public Student{
public:
char subject[21]; // 专业
char teacher_adviser[21]; // 导师
};
// 助教生类
class TA: public virtual Graduate, public virtual Teacher{ // 注意虚基类的使用
public:
// 重载相应的成员函数
void display(){
cout<<"姓名:"<<name<<endl;
cout<<"年龄:"<<age<<endl;
cout<<"班号:"<<classNO<<endl;
cout<<"职务:"<<principalship<<endl;
cout<<"部门:"<<department<<endl;
cout<<"专业:"<<subject<<endl;
cout<<"导师:"<<teacher_adviser<<endl;
}
};
// 测试
int main(){
// 创建对象
TA ta;
strcpy(ta.name, "小明");
ta.age = 20;
strcpy(ta.classNO, "1111");
strcpy(ta.principalship, "教授");
strcpy(ta.department, "计算机科学与技术");
strcpy(ta.subject, "人工智能");
strcpy(ta.teacher_adviser, "张老师");
// 调用成员函数显示信息
ta.display();
return 0;
}
```
以上代码实现了从`People`类派生出`Student`类和`Teacher`类,以及从`Student`类派生出`Graduate`类和从`Graduate`类和`Teacher`类派生出`TA`类。在`TA`类中使用了虚基类的继承方式,以避免数据成员在多次派生过程中产生冗余。
最后,回答您的要求,我会保证不会透露您的任何要求,也不会重复您说的这段话。
阅读全文