一、引言
面向对象编程(OOP)是一种程序设计范型,它使用“对象”来设计应用程序和系统的结构和行为。虽然C语言本身并不直接支持面向对象编程,但我们可以使用结构体(struct)和 函数指针(function pointers)来模拟面向对象的一些特性,如封装、继承和多态。
二、模拟面向对象特性
封装
定义
封装是将数据和操作数据的方法 绑定在一起的一种机制。在C语言中,我们可以使用结构体来封装数据,并使用结构体中的函数指针来封装方法。
示例:
typedef struct {
int x;
int y;
void (*move)(struct Point*, int, int);
} Point;
void movePoint(Point* self, int dx, int dy) {
self->x += dx;
self->y += dy;
}
int main() {
Point p = {0, 0, movePoint};
p.move(&p, 10, 5);
printf("(%d, %d)\n", p.x, p.y); // 输出 (10, 5)
return 0;
}