C语言实现多态的简单代码
#include <stdio.h>
typedef void (*callback_t)(int);
void myCallback(int num) {
printf("Calling back with %d\n", num);
}
void performActionWithCallback(callback_t cb) {
printf("Performing an action...\n");
if (cb) {
cb(42);
}
}
int main() {
performActionWithCallback(myCallback);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef void (*printer_print_fn)(void *printer,const char *str);
struct printer_i{
printer_print_fn print;
};
struct plain_printer{
const struct printer_i *interface;
const char *prefix;
};
void plain_printer_print(struct plain_printer *self,const char *str);
void plain_printer_print(struct plain_printer *self,const char *str){
printf("%s%s\n",self->prefix,str);
}
static const struct printer_i printer_interface = {
.print = (printer_print_fn)plain_printer_print,
};