四月電腦語言熱門排行榜,C王者歸來,重登王者寶座,居然幹掉了JAVA。說在前面的。
都說c++是物件導向的,可為了滿足c++語言的初衷:a better C!c++不得不相容C,於是我們還是看得到寫在類外面的函數、變數什麼的,C#就不同了,結合Java和c++的各自優點,完全的物件導向,今天我要說的是用C來模仿C#中的物件導向,注意,僅是模仿~~~
1)、c#中有類class,那麼在C中用結構體struct代替;
2)、c#類中有成員函數,那麼C中用函數指標代替;
下面各定義一個類和結構體,來表示一種表單,當點擊表單時,提示表單的ID和表單的標題:
c#中的類:
C#中的類
1 class Window
2 {
3 private string WndText;
4 private string WndID;
5 public Window(string text,string id)
6 {
7 WndText=text;
8 WndID=id;
9 }
10 public void OnClick()
11 {
12 Console.Write("表單"+WndID+"的標題為:"+WndText);
13 }
14 }
用戶端程式:
1 Window win=new ("執行個體表單","0x12345678");
2 win.OnClick();//顯示資訊
C中的結構體
1 Struct Window
2 {
3 char *WndText;
4 char *WndID;
5 void (*OnClick)(char *text,char *id);//函數指標6 };
用戶端程式:
代碼
void fun(char *text,char *id)
{
printf("表單%s的標題為:%s",id,text);
}
Window win;
win.WndText="c中的表單";
win.WndID="0x87654321";
win.OnClick=fun;//函數指標
win.OnClick(win.WndText,win.WndID);//像類一樣調用它的"成員函數"
網上見一牛話:如果你愛編程,那麼請愛C;如果你愛C,那麼請愛指標;如果你愛指標,那麼請愛指標的指標。