使用C++语言定义一个People类最为基类,然后分别定义学生类Student和Teacher类,这两个类公有继承自People类,编写show函数实现多态性(对于学生输出学号,对于教师输出教师号)
时间: 2023-06-11 16:10:27 浏览: 113
由Person类派生出学生类Student和教师类Teacher
以下是使用C语言定义People类最为基类,然后分别定义学生类Student和Teacher类,这两个类公有继承自People类,实现多态性的示例代码:
```c
#include <stdio.h>
// 基类 People
typedef struct {
char name[20];
int age;
} People;
void People_show(People *p) {
printf("Name:%s\nAge:%d\n", p->name, p->age);
}
// 学生类 Student
typedef struct {
People base;
int stu_id;
} Student;
void Student_show(Student *s) {
People_show(&(s->base));
printf("Student ID:%d\n", s->stu_id);
}
// 教师类 Teacher
typedef struct {
People base;
int tea_id;
} Teacher;
void Teacher_show(Teacher *t) {
People_show(&(t->base));
printf("Teacher ID:%d\n", t->tea_id);
}
int main() {
// 学生对象
Student s = {.base = {"Tom", 18}, .stu_id = 1001};
printf("Student:\n");
Student_show(&s);
// 教师对象
Teacher t = {.base = {"Jack", 30}, .tea_id = 2001};
printf("\nTeacher:\n");
Teacher_show(&t);
return 0;
}
```
在上述代码中,我们定义了一个基类People,其中包含了姓名和年龄两个成员变量,以及一个show函数用于输出对象的姓名和年龄信息。接着,我们定义了学生类Student和教师类Teacher,它们都通过公有继承方式继承了People的成员变量和show函数,并且在自己的show函数中增加了与自己相关的信息输出。最后在主函数中,我们分别创建了学生对象和教师对象,并调用了它们的show函数,将对象的信息输出到控制台上。
需要注意的是,在上述代码中,我们使用了结构体嵌套的方式实现了类的继承,即在派生类的定义中,将基类的结构体作为成员变量嵌入其中,并通过“基类名.成员变量名”的方式访问基类成员。同时,为了实现多态性,我们定义了不同的show函数,并通过指针调用这些函数,让不同的对象调用不同的函数,从而实现了多态性。
阅读全文