用C语言实现面向对象程序设计(二)
上集对OOSM宏包及其应用作了直观的介绍,下面我们来看看ccirc/crect/csqua等对象具体的描述方式。
接口(interface)对行为进行抽象,利用它可以实现类的多态性,imeas.h定义了一个测量周长和面积的接口:
#include "ccirc.h"#define PI (3.1415926)static double peri(void* this){ return 2 * PI * ((ccirc*)this)->radius;}static double area(void* this){ return PI * ((ccirc*)this)->radius * ((ccirc*)this)->radius;}static double diam(ccirc* this){ return 2 * this->radius;}constructor(ccirc){ mapping(imeas.peri, peri); mapping(imeas.area, area); mapping(diam, diam);}destructor(ccirc){ return 1; /* Returns 1 for freeing the memory */}圆形类在实现imeas接口的基础上,另有自己的diam方法,注意自己本身方法直接映射即可。