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++] 繼承和多型整理二C++繼承多型
- Java 繼承與多型實驗Java繼承多型
- 繼承與多型繼承多型
- 繼承和多型繼承多型
- 多型和繼承多型繼承
- C#中繼承和多型的研究C#中繼繼承多型
- C++ 繼承、多型、虛擬函式C++繼承多型函式
- java繼承與多型Java繼承多型
- 繼承+多型+抽象類繼承多型抽象
- go語言中的封裝,繼承和多型Go封裝繼承多型
- c++學習(1)--C++封裝、繼承、多型C++封裝繼承多型
- C#如何實現多重繼承C#繼承
- JavaScript 的繼承與多型JavaScript繼承多型
- Python 繼承 和 多型Python繼承多型
- OOP的多型和繼承OOP多型繼承
- TypeScript(5)類、繼承、多型TypeScript繼承多型
- Javascript的繼承與多型JavaScript繼承多型
- 封裝、繼承和多型封裝繼承多型
- c# 中的封裝、繼承、多型詳解C#封裝繼承多型
- php物件導向多繼承實現PHP物件繼承
- Java抽象類、繼承及多型和介面卡的實現Java抽象繼承多型
- 重讀C++之一:封裝、繼承和多型C++封裝繼承多型
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- 多繼承 與 多重繼承繼承
- C 語言實現泛型 swap 函式泛型函式
- prototype實現繼承繼承
- 實現JavaScript繼承JavaScript繼承
- C++多繼承的細節C++繼承
- 多繼承繼承
- Python中的繼承和多型Python繼承多型
- 太極1:繼承和多型2繼承多型
- Java中的類繼承與多型Java繼承多型
- 面向2-封裝、繼承、多型封裝繼承多型
- Javascript 五十問——實現的繼承多種方式JavaScript繼承