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,那么请爱指针;如果你爱指针,那么请爱指针的指针。

 

 

你可能感兴趣的:(面向对象)