在C语言中,实现多态的方法通常是通过函数指针和结构体来实现。通过定义一个包含函数指针的结构体,并且在不同的子类中实现相同的函数指针,就可以实现多态性。
具体实现步骤如下:
示例代码如下所示:
#include <stdio.h>
// 基类结构体
typedef struct {
void (*func)(void);
} BaseClass;
// 子类1结构体
typedef struct {
BaseClass base;
} SubClass1;
void func1() {
printf("This is func1.\n");
}
// 子类2结构体
typedef struct {
BaseClass base;
} SubClass2;
void func2() {
printf("This is func2.\n");
}
int main() {
SubClass1 sub1;
SubClass2 sub2;
// 初始化子类1
sub1.base.func = func1;
// 初始化子类2
sub2.base.func = func2;
// 多态调用
BaseClass* ptr1 = (BaseClass*)&sub1;
ptr1->func();
BaseClass* ptr2 = (BaseClass*)&sub2;
ptr2->func();
return 0;
}
以上代码通过定义基类结构体BaseClass和两个子类结构体SubClass1和SubClass2实现多态性。函数指针func作为虚函数,分别在子类中实现具体的函数逻辑。在main函数中,通过基类指针调用虚函数,实现了多态的效果。