在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函數中,通過基類指針調用虛函數,實現了多態的效果。