四月计算机语言排行榜,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 }
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(); // 显示信息
2 win.OnClick(); // 显示信息
C中的结构体
1
Struct Window
2 {
3 char * WndText;
4 char * WndID;
5 void ( * OnClick)(char *text,char *id); // 函数指针
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); // 像类一样调用它的"成员函数"
{
printf( " 窗体%s的标题为:%s " ,id,text);
}
Window win;
win.WndText = " c中的窗体 " ;
win.WndID = " 0x87654321 " ;
win.OnClick = fun; // 函数指针
win.OnClick(win.WndText,win.WndID); // 像类一样调用它的"成员函数"
网上见一牛话:如果你爱编程,那么请爱C;如果你爱C,那么请爱指针;如果你爱指针,那么请爱指针的指针。