amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
12
返回列表 发新帖
楼主: 广轻电气091

C 语言面向对象编程 - 封装

  [复制链接]
发表于 2019-12-25 09:30:29 来自手机 | 显示全部楼层
为什么不用C++
发表于 2019-12-25 13:44:23 | 显示全部楼层
感谢分享
 楼主| 发表于 2019-12-25 14:40:54 | 显示全部楼层

大型的应用软件开发,建议使用支持面向对象特性的编程语言
 楼主| 发表于 2019-12-25 14:41:16 | 显示全部楼层

感谢关注
 楼主| 发表于 2019-12-25 14:41:52 | 显示全部楼层
zly_1980 发表于 2019-12-25 09:28
其实不是,最简单的就是c++只是把c语言的数据跟方法放在一个叫class的东西去了,在c语言里分成2个部分:一 ...

C++并没有那么简单
发表于 2019-12-25 14:49:12 | 显示全部楼层

只是最简单的一个举例,不代表全部。
发表于 2019-12-25 16:30:40 | 显示全部楼层
本帖最后由 jjj 于 2019-12-25 16:33 编辑

对象则是数据和动作的结合体。
你这只有数据,
typedef struct
{
  const char          *Name;
  uint8_t              ClassCode;  
  USBH_StatusTypeDef  (*Init)        (struct _USBH_HandleTypeDef *phost);
  USBH_StatusTypeDef  (*DeInit)      (struct _USBH_HandleTypeDef *phost);
  USBH_StatusTypeDef  (*Requests)    (struct _USBH_HandleTypeDef *phost);  
  USBH_StatusTypeDef  (*BgndProcess) (struct _USBH_HandleTypeDef *phost);
  USBH_StatusTypeDef  (*SOFProcess) (struct _USBH_HandleTypeDef *phost);  
  void*                pData;
} USBH_ClassTypeDef;
类似这样的,勉强称作对象
发表于 2020-1-6 12:07:31 | 显示全部楼层
本帖最后由 L_Hongzhen 于 2020-1-6 12:08 编辑

顶一下!通过  结构体+函数指针的方式,可以实现了面向对象的编程思想,类似于C++的类。
 楼主| 发表于 2020-1-6 13:06:37 | 显示全部楼层
jjj 发表于 2019-12-25 16:30
对象则是数据和动作的结合体。
你这只有数据,
typedef struct

文章最后说明了,并没有把函数放在结构体进行封装
 楼主| 发表于 2020-1-6 13:07:08 | 显示全部楼层
L_Hongzhen 发表于 2020-1-6 12:07
顶一下!通过  结构体+函数指针的方式,可以实现了面向对象的编程思想,类似于C++的类。 ...

感谢关注!
发表于 2020-1-19 15:54:58 | 显示全部楼层
Mr.D 发表于 2019-11-29 10:37
结构体里包含函数指针,应该挺常见的吧

这种写法不常见,调试的时候很头疼,不能调整,不能打断点,试试你就知道了
发表于 2020-1-19 16:10:53 | 显示全部楼层
学习           
发表于 2020-1-19 22:19:25 | 显示全部楼层
kevin_me 发表于 2019-11-29 09:32
想问一下 为什么结构体指针引用成员时,不用加(*),而一般的单个变量指针取值时要加(*)?

书上这么规 ...

《C语言程序设计(第四版)》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2020-1-20 09:18:09 | 显示全部楼层
四叶草35 发表于 2020-1-19 15:54
这种写法不常见,调试的时候很头疼,不能调整,不能打断点,试试你就知道了 ...

这种做法在使用C语言编写的大型软件里面比较常见
 楼主| 发表于 2020-1-20 09:18:25 | 显示全部楼层
发表于 2020-1-21 10:25:48 | 显示全部楼层
这个只能算是面向接口,new的地方需要传入 ** 指针的指针,
发表于 2020-1-21 13:49:45 来自手机 | 显示全部楼层
c用了很多年了   实在不想改了  要改也改行 呵呵
发表于 2020-2-7 14:02:50 来自手机 | 显示全部楼层
楼主位的例子一定要隐藏结构体声明内容的话,可以在create一个实例的时候返回一个类似Handle的值,所有的实例修改获取参数都需传递对应的handle值。windows很多资源和emwin窗口实例管理也是这样的,内部管理handle和实例指针的映射,具体实现可以参考下工厂模式。
发表于 2020-2-7 14:17:02 | 显示全部楼层
感兴趣的同学可以了解一下GObject
发表于 2020-2-7 15:49:05 | 显示全部楼层
多谢分享,学习
 楼主| 发表于 2020-2-7 18:19:05 | 显示全部楼层
nic_911 发表于 2020-2-7 14:02
楼主位的例子一定要隐藏结构体声明内容的话,可以在create一个实例的时候返回一个类似Handle的值,所有的实 ...

感谢提供思路!
 楼主| 发表于 2020-2-7 18:19:24 | 显示全部楼层
shwind 发表于 2020-2-7 15:49
多谢分享,学习

感谢关注
 楼主| 发表于 2020-2-7 18:19:45 | 显示全部楼层
JeffreySun 发表于 2020-2-7 14:17
感兴趣的同学可以了解一下GObject

感谢建议!
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2020-2-25 17:33

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表