C中的面向对象
2023-02-18 16:38:17 时间
四月计算机语言排行榜,C王者归来,重登王者宝座,居然干掉了JAVA。说在前面的。
都说c++是面向对象的,可为了满足c++语言的初衷:a better C!c++不得不兼容C,于是我们还是看得到写在类外面的函数、变量什么的,C#就不同了,结合Java和c++的各自优点,完全的面向对象,今天我要说的是用C来模仿C#中的面向对象,注意,仅是模仿~~~
1)、c#中有类class,那么在C中用结构体struct代替;
2)、c#类中有成员函数,那么C中用函数指针代替;
下面各定义一个类和结构体,来表示一种窗体,当点击窗体时,提示窗体的ID和窗体的标题:
c#中的类:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 };
客户端程序:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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,那么请爱指针;如果你爱指针,那么请爱指针的指针。
相关文章
- UI自动化工具4399AT全方面更新
- iOS界面黑白实现
- 【C语言】计算器
- 将模型转为NNIE框架支持的wk模型第一步:tensorflow->caffe
- 不同数据库模式下DATE类型的行为解析
- 探索专有领域的端到端ASR解决之道
- 再不解决延迟不当,小心你的内存被打爆
- CG行业云渲染服务的演进之路
- 云小课 | 华为云KYON之L2CG
- 做开发,这几种锁机制你不得不了解一下
- 超详细的jQuery的 DOM操作,一篇就足够!
- 解密华为云FusionInsight MRS新特性:一架构三湖
- 一文带你认识MindSpore新一代分子模拟库SPONGE
- MindSpore:不用摘口罩也知道你是谁
- 技术干货 | 基于MindSpore更好的理解Focal Loss
- 云小课|DSC帮您管数据,保障您的云上数据安全
- 多方安全计算:隐私保护集合求交技术
- 保障实时音视频服务体验,华为云原生媒体网络有7大秘籍
- 云小课 | 玩转HiLens Studio之手机实时视频流调试代码
- 浅析决策树的生长和剪枝