使用struct實現面向對象編程的封裝

雖然C是面向過程的語言,可是這不表明C不能使用面向對象的思想,本質上說語言只是一種手段而已,一種外在的表現形式,支持面向對象的語言只是經過設計的特定的關鍵字更好的表現了面向對象編程而已.C中也可使用面向對象的思想,經過struct結構體和函數指針來實現.java

struct表示java或C#中的類Class,struct中的字段表示類中的屬性,函數指針表示類中的方法.簡單的實現代碼以下:編程

#include <stdio.h>

/* 定義一個結構體,這個結構體至關於類 name,age字段至關於屬性 函數指針sayhello,表明這個"類"的方法 */ typedef struct person { char *name; int age; int (*sayhello)(const struct person *p); }Person; //實現"類"中定義的方法
int _sayhello(const struct person *p) { printf("My name is %s,my age is %d.\n", p->name, p->age); return 0; } int main(void) { //聲明一個實例並給其賦值,下面的賦值方法在GNU的gcc中是支持的
    Person p = { //字段賦值
        .name = "Linux", .age = 22, //函數指針實現
        .sayhello = _sayhello, }; //調用"類"的方法
    p.sayhello(&p); return 0; }

這樣就簡單的實現了一個類的封裝.函數

相關文章
相關標籤/搜索