要想讓native C模擬OO編程,對指針的靈活使用還是比較重要,不過指針也是萬惡之源,使用時必須謹慎否則會出現意想不到的結果(跑題了)。。。。上一篇的代碼可能有點簡單了,下面的代碼運用了函數指針模擬了oo編程
#include <stdio.h>
struct A {
int a;
void (*showA)(struct A *);
};
static void A_showA(struct A *THIS){
printf("the value of obj's a is %d\n",THIS->a);
}
void iniA(struct A *THIS){
THIS->a=100;
THIS->showA=A_showA;
}
int main(){
struct A obj;
iniA(&obj);
obj.showA(&obj);
return 0;
}
native C中沒有C++/Java/C#的所謂的“方法”,因爲本質上都是一個自定義函數,類與結構體也是如此,struct和class也只是編譯細節上有所不同,這個我以後會專門出一期教程的,另外要強調的是,C語言的結構體是可以包含函數指針的,這一編譯特性也使用native C寫OO程序變得可行簡單