以 C 語言實作物件封裝 (Encapsulation)

高等 C 語言

簡介

字串

指標與陣列

函數

結構

物件導向

記憶體

檔案

錯誤處理

巨集處理

C 與組合語言

資料結構

動態字串

動態陣列

鏈結串列

雜湊表

開發環境

Make

Cygwin

MinGW

DevC++

wxDevC++

編譯器

gcc 編譯器

TinyCC 編譯器

LCC 編譯器

應用主題

CGI 程式

GNU 程式

視窗程式

影像處理

練習題

訊息

相關網站

參考文獻

最新修改

簡體版

English

物件導向中的封裝,是指將資料與函數封裝在一個稱為物件的結構當中,我們可以使用 C 語言的結構,將資料與函數指標一起放入結構中,就形成了一個類似物件的結構。

程式範例:實作 Circle 物件

#include <stdio.h>
 
struct Circle {
  void (*new)(struct Circle*, float); 
  float (*area)(struct Circle*);
  float r;
};
 
float CircleArea(struct Circle *obj) { return 3.14 * obj->r * obj->r; }
 
void CircleNew(struct Circle *obj, float r) {
  obj->new = CircleNew;
  obj->area = CircleArea;
  obj->r = r;
}
 
int main() {
  struct Circle c;
  CircleNew(&c, 3.0);
  printf("area() = %G\n", c.area(&c));
}

執行結果

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

D:\cp>Circle
area() = 28.26

Facebook

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