C中的面向对象

      四月计算机语言排行榜,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,那么请爱指针;如果你爱指针,那么请爱指针的指针。

 

 

posted @ 2010-04-20 17:19  周见智  阅读(621)  评论(1编辑  收藏  举报