C語言本身并不是一種面向對象的編程語言,但是可以通過一些技巧和約定來模擬面向對象的特性。
typedef struct {
int x;
int y;
void (*display)(void*);
} Point;
void displayPoint(void* obj) {
Point* p = (Point*)obj;
printf("(%d, %d)\n", p->x, p->y);
}
int main() {
Point p = {1, 2, &displayPoint};
p.display(&p);
return 0;
}
typedef struct {
int x;
int y;
} Point;
static void displayPoint(Point* p) {
printf("(%d, %d)\n", p->x, p->y);
}
int main() {
Point p = {1, 2};
displayPoint(&p);
return 0;
}
雖然C語言不是面向對象的語言,但是通過上述方法可以模擬出一些面向對象的特性,如封裝、繼承和多態。但是相比于面向對象的語言來說,C語言的模擬是比較笨拙和繁瑣的。