以 C 實作物件導向的多型
高等 C 語言簡介字串指標與陣列函數結構物件導向記憶體檔案錯誤處理巨集處理C 與組合語言資料結構動態字串動態陣列鏈結串列雜湊表開發環境MakeCygwinMinGWDevC++wxDevC++編譯器gcc 編譯器TinyCC 編譯器LCC 編譯器應用主題CGI 程式GNU 程式視窗程式影像處理練習題訊息相關網站參考文獻最新修改簡體版English |
程式範例:以 C 實作物件導向的多型範例#include <stdio.h> #define ShapeText(TYPE) void (*new)(struct TYPE*);float (*area)(struct TYPE*) typedef struct _Shape { // Shape 物件,沒有欄位 ShapeText(_Shape); } Shape; float ShapeArea(Shape *obj) { return 0; } void ShapeNew(Shape *obj) { obj->new = ShapeNew; obj->area = ShapeArea; } typedef struct _Circle { ShapeText(_Circle); float r; } Circle; float CircleArea(Circle *obj) { return 3.14 * obj->r * obj->r; } void CircleNew(Circle *obj) { obj->new = CircleNew; obj->area = CircleArea; } int main() { Shape s; ShapeNew(&s); Circle c; CircleNew(&c); c.r = 3.0; Shape *list[] = { &s, (Shape*) &c }; int i; for (i=0; i<2; i++) { Shape *o = list[i]; printf("s.area()=%G\n", o->area(o)); } } 執行結果
|
page revision: 3, last edited: 02 Sep 2010 03:05
挛7把枣
Post preview:
Close preview