#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(struct cat
*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