阅读以下说明和C代码,将应填入(n)处的字句写在的对应栏内。【说明】在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape t、 point t和circle t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。【C代码】typedef enum { point,circle } shape type; /* 程序中的两种图形:点和圆 */typedef struct { /* 基本的图形类型 */shape_type type; /* 图形中类标识:点或者圆*/void (*destroy) (); /* 销毁图形操作的函数指针*/void (*draw) (); /* 绘制图形操作的函数指针*/} shape_t;typedef struct { shape_t common; int x; iht y; } point_t; /* 定义点类型, x, y为点坐标*/void destroyPoint (point_t* this) { free (this); printf ("Point destoryed!\n"); } ) /* 销毁点对象*/void drawPoint(point_t* this) { printf("P(%d,%d)", this-x, this-y); }/* 绘制点对象*/shape_t* createPoint (va_list* ap) (/* 创建点对象,并设置其属性*/point_t* p_point;if ( (p_point= (point_t*)malloc (sizeof (point_t)) ) ==NULL) returnNULL;p_point->common, type = point; p_point-common, destroy = destroyPoint;p_point->common.draw = drawPoint;p_point->x = va_arg(*ap, int); /* 设置点的横坐标*/p_point->y = va_arg(*ap, int); /* 设置点的纵坐标*/return (shape_t*)p_ooint; /*返回点对象指针*/}typedef struct { /*定义圆类型*/shape_t common;point_t 4center; /*圆心点*/int radius; /*圆半径*/} circle_t;void destroyCircle(circle_t* this){free((1)); free(this); printf("Circle destoryed!\n");}void drawCircle(circle_t* this) {print f ("C (");(2).draw(this->center); /*绘制圆心*/printf(",%d) ", this->radius);}shape_t* createCircle(va_list4 ap) { /*创建一个圆,并设置其属性*/circle_t4 p circle;if ((p_circle = (circle_t4)malloc (sizeof (circle_t)) ) ==NULL ) return NULL;p_circle->common.type = circle; p_circle->common.destroy = destroyCircle;p_circle->common.draw = drawCircle;(3) = createPoint(ap); /* 设置圆心*/p_circle->radius = va_arg(*ap, int); /* 设置圆半径*/return p_circle;}shape_t* createShape(shape_type st, "') { /* 创建某一种具体的图形*/va_list ap; /*可变参数列表*/&nbs
阅读以下说明和C代码,将应填入(n)处的字句写在的对应栏内。
【说明】
在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape t、 point t和circle t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。
【C代码】
typedef enum { point,circle } shape type; /* 程序中的两种图形:点和圆 */
typedef struct { /* 基本的图形类型 */
shape_type type; /* 图形中类标识:点或者圆*/
void (*destroy) (); /* 销毁图形操作的函数指针*/
void (*draw) (); /* 绘制图形操作的函数指针*/
} shape_t;
typedef struct { shape_t common; int x; iht y; } point_t; /* 定义点类
型, x, y为点坐标*/
void destroyPoint (point_t* this) { free (this); printf ("Point destoryed!
\n"); } ) /* 销毁点对象*/
void drawPoint(point_t* this) { printf("P(%d,%d)", this->x, this->y); }
/* 绘制点对象*/
shape_t* createPoint (va_list* ap) (/* 创建点对象,并设置其属性*/
point_t* p_point;
if ( (p_point= (point_t*)malloc (sizeof (point_t)) ) ==NULL) returnNULL;
p_point->common, type = point; p_point->common, destroy = destroyPoint;
p_point->common.draw = drawPoint;
p_point->x = va_arg(*ap, int); /* 设置点的横坐标*/
p_point->y = va_arg(*ap, int); /* 设置点的纵坐标*/
return (shape_t*)p_ooint; /*返回点对象指针*/
}
typedef struct { /*定义圆类型*/
shape_t common;
point_t 4center; /*圆心点*/
int radius; /*圆半径*/
} circle_t;
void destroyCircle(circle_t* this){
free((1)); free(this); printf("Circle destoryed!\n");
}
void drawCircle(circle_t* this) {
print f ("C (");
(2).draw(this->center); /*绘制圆心*/
printf(",%d) ", this->radius);
}
shape_t* createCircle(va_list4 ap) { /*创建一个圆,并设置其属性*/
circle_t4 p circle;
if ((p_circle = (circle_t4)malloc (sizeof (circle_t)) ) ==NULL ) return NULL;
p_circle->common.type = circle; p_circle->common.destroy = destroy
Circle;
p_circle->common.draw = drawCircle;
(3) = createPoint(ap); /* 设置圆心*/
p_circle->radius = va_arg(*ap, int); /* 设置圆半径*/
return p_circle;
}
shape_t* createShape(shape_type st, "') { /* 创建某一种具体的图形*/
va_list ap; /*可变参数列表*/
&nbs