举出一个C语言可以通过结构体内创建函数指针实现面向对象思想的例子
时间: 2023-04-08 20:03:38 浏览: 119
可以通过在结构体内定义函数指针,并将其指向不同的函数实现不同的功能,从而实现面向对象思想。例如:
```
typedef struct {
int (*getArea)(void);
int (*getPerimeter)(void);
int width;
int height;
} Rectangle;
int getRectangleArea(void) {
Rectangle *rect = (Rectangle *)this;
return rect->width * rect->height;
}
int getRectanglePerimeter(void) {
Rectangle *rect = (Rectangle *)this;
return 2 * (rect->width + rect->height);
}
Rectangle createRectangle(int width, int height) {
Rectangle rect = {
.getArea = getRectangleArea,
.getPerimeter = getRectanglePerimeter,
.width = width,
.height = height
};
return rect;
}
int main() {
Rectangle rect = createRectangle(5, 10);
printf("Area: %d\n", rect.getArea());
printf("Perimeter: %d\n", rect.getPerimeter());
return 0;
}
```
在上面的例子中,我们定义了一个结构体 `Rectangle`,它包含了两个函数指针 `getArea` 和 `getPerimeter`,分别指向计算矩形面积和周长的函数。我们还定义了一个 `createRectangle` 函数,用于创建一个矩形对象,并将其函数指针指向对应的函数。在 `main` 函数中,我们创建了一个矩形对象 `rect`,并通过调用其函数指针来获取矩形的面积和周长。这样,我们就通过结构体内创建函数指针实现了面向对象思想。
阅读全文