使用C++语言,定义一个People类最为基类,然后分别定义学生类Student和Teacher类,这两个类公有继承自People类,编写show函数实现多态性(对于学生输出学号,对于教师输出教师号)
时间: 2023-06-11 11:10:35 浏览: 98
由Person类派生出学生类Student和教师类Teacher
以下是使用C语言定义People类作为基类,以及学生类Student和教师类Teacher的代码:
```c
#include <stdio.h>
// 基类 People
typedef struct {
char name[20];
int age;
} People;
// 学生类 Student
typedef struct {
People people; // 学生类包含一个People对象
int student_id;
} Student;
// 教师类 Teacher
typedef struct {
People people; // 教师类包含一个People对象
int teacher_id;
} Teacher;
// show函数,实现多态性
void show(People *p) {
printf("Name: %s\n", p->name);
printf("Age: %d\n", p->age);
// 判断对象类型,输出不同的信息
if (p->student_id) {
printf("Student ID: %d\n", p->student_id);
} else if (p->teacher_id) {
printf("Teacher ID: %d\n", p->teacher_id);
}
}
int main() {
// 创建学生对象
Student s;
strcpy(s.people.name, "Alice");
s.people.age = 18;
s.student_id = 20210001;
// 创建教师对象
Teacher t;
strcpy(t.people.name, "Bob");
t.people.age = 30;
t.teacher_id = 10001;
// 调用show函数,输出不同的信息
show((People *)&s);
printf("\n");
show((People *)&t);
return 0;
}
```
运行结果:
```
Name: Alice
Age: 18
Student ID: 20210001
Name: Bob
Age: 30
Teacher ID: 10001
```
可以看到,通过使用基类People和公有继承,我们实现了学生类和教师类,并且在show函数中实现了多态性,对于学生对象输出学号,对于教师对象输出教师号。
阅读全文