C語言實現繼承多型
#include <string.h>
#include <stdio.h>
struct animal{
char name[20];
void (*speak)();
};
void Animal(struct animal *this, const char *name, void(*fun)()){
strcpy(this->name, name);
this->speak=fun;
}
struct cat{
struct animal base;
};
void catSpeak(){
printf("Mmmmiao~\n");
}
void Cat(const struct animal *this){
Animal((struct animal *)this, "cat's Name is GuaGua!!!", catSpeak);
}
int main(){
struct cat c;
Cat(&c);
struct animal *p = (struct animal *)&c;
p->speak();
printf("%s",p->name);
}
輸出結果:
(base) ➜ POLYMORPHISMbyC ./INHERI
Mmmmiao~
cat's Name is GuaGua!!!%
完整來源:
https://zhuanlan.zhihu.com/p/25127633
相關文章
- C語言如何實現繼承及容器C語言繼承
- aardio 實現封裝繼承多型封裝繼承多型
- Go語言封裝、繼承、介面、多型和斷言的案例Go封裝繼承多型
- [c++] 繼承和多型整理二C++繼承多型
- 實驗五 繼承和多型繼承多型
- 實驗5 繼承和多型繼承多型
- 繼承與多型繼承多型
- 多型和繼承多型繼承
- C#中繼承和多型的研究C#中繼繼承多型
- Python 繼承 和 多型Python繼承多型
- java繼承與多型Java繼承多型
- go語言中的封裝,繼承和多型Go封裝繼承多型
- C#如何實現多重繼承C#繼承
- JavaScript 的繼承與多型JavaScript繼承多型
- Javascript的繼承與多型JavaScript繼承多型
- 封裝、繼承和多型封裝繼承多型
- TypeScript(5)類、繼承、多型TypeScript繼承多型
- OOP的多型和繼承OOP多型繼承
- Java抽象類、繼承及多型和介面卡的實現Java抽象繼承多型
- C 語言實現泛型 swap 函式泛型函式
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- Python中的繼承和多型Python繼承多型
- 多繼承 與 多重繼承繼承
- C語言如何實現泛型程式設計?C語言泛型程式設計
- prototype實現繼承繼承
- 實現JavaScript繼承JavaScript繼承
- C語言實現多級濾波—乾貨C語言
- 多繼承繼承
- Java中的類繼承與多型Java繼承多型
- 面向2-封裝、繼承、多型封裝繼承多型
- 太極1:繼承和多型2繼承多型
- Javascript 五十問——實現的繼承多種方式JavaScript繼承
- 132.繼承Thread實現多執行緒繼承thread執行緒
- C#類繼承自泛型集合C#繼承泛型
- Golang | Go語言多型的實現與interface使用Golang多型
- Solidity語言學習筆記————34、繼承Solid筆記繼承
- 繼承的實現方式繼承
- Javascript如何實現繼承JavaScript繼承