Apr 27
注:这个程序是在软件设计师教程上看到,并做了一点点修改得到。。
在一个简化的绘图程序中,支持点(point)和圆(circle)两种图形,在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),
并定义类型shape_t、point_t、circle_t分别表示基本图形、点和圆,点和圆自然具有基本图形的所有特征。
下面是利用C语言,通过函数指针和可变参数机制实现上面的类层次关系:
#include <stdio.h> #include <stdlib.h> #include <stdarg.h> // 程序中的两个图形:点和圆 typedef enum {point,circle}shape_type; // 基本图形类型 typedef struct { shape_type type; void (*destroy)(); void (*draw)(); }shape_t; // 点类 typedef struct { shape_t common; int x,y; }point_t; // 圆类 typedef struct { shape_t common; point_t *center; int radius; }circle_t; /*