以 C 語言實作繼承

高等 C 語言

簡介

字串

指標與陣列

函數

結構

物件導向

記憶體

檔案

錯誤處理

巨集處理

C 與組合語言

資料結構

動態字串

動態陣列

鏈結串列

雜湊表

開發環境

Make

Cygwin

MinGW

DevC++

wxDevC++

編譯器

gcc 編譯器

TinyCC 編譯器

LCC 編譯器

應用主題

CGI 程式

GNU 程式

視窗程式

影像處理

練習題

訊息

相關網站

參考文獻

最新修改

簡體版

English

在物件導向當中,子類別繼承父類別時,會同時繼承所有父類別的內容,我們可以在程式中加入

程式範例:以 C 語言實作繼承 (Circle 繼承 Shape)

#include <stdio.h>
 
#define ShapeMembers(TYPE) void (*new)(struct TYPE*);float (*area)(struct TYPE*)
 
typedef struct _Shape { // Shape 物件,沒有欄位
  ShapeMembers(_Shape);
} Shape;
 
float ShapeArea(Shape *obj) { return 0; }
 
void ShapeNew(Shape *obj) {
  obj->new = ShapeNew;
  obj->area = ShapeArea;
}
 
typedef struct _Circle {
  ShapeMembers(_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);
  printf("s.area()=%G\n", s.area(&s));
 
  Circle c;
  CircleNew(&c);
  c.r = 3.0;
  printf("c.area()=%G\n", c.area(&c));
}

執行結果

D:\cp>gcc inherit.c -o inherit

D:\cp>inherit
s.area()=0
c.area()=28.26

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License