为什么不用C++
大型的应用软件开发,建议使用支持面向对象特性的编程语言 1148729990 发表于 2019-12-25 13:44
感谢分享
感谢关注 zly_1980 发表于 2019-12-25 09:28
其实不是,最简单的就是c++只是把c语言的数据跟方法放在一个叫class的东西去了,在c语言里分成2个部分:一 ...
C++并没有那么简单 广轻电气091 发表于 2019-12-25 14:41
C++并没有那么简单
只是最简单的一个举例,不代表全部。{:smile:} 本帖最后由 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;
类似这样的,勉强称作对象
本帖最后由 L_Hongzhen 于 2020-1-6 12:08 编辑
顶一下!通过结构体+函数指针的方式,可以实现了面向对象的编程思想,类似于C++的类。 jjj 发表于 2019-12-25 16:30
对象则是数据和动作的结合体。
你这只有数据,
typedef struct
文章最后说明了,并没有把函数放在结构体进行封装 L_Hongzhen 发表于 2020-1-6 12:07
顶一下!通过结构体+函数指针的方式,可以实现了面向对象的编程思想,类似于C++的类。 ...
感谢关注! Mr.D 发表于 2019-11-29 10:37
结构体里包含函数指针,应该挺常见的吧
这种写法不常见,调试的时候很头疼,不能调整,不能打断点,试试你就知道了 学习 kevin_me 发表于 2019-11-29 09:32
想问一下 为什么结构体指针引用成员时,不用加(*),而一般的单个变量指针取值时要加(*)?
书上这么规 ...
《C语言程序设计(第四版)》
四叶草35 发表于 2020-1-19 15:54
这种写法不常见,调试的时候很头疼,不能调整,不能打断点,试试你就知道了 ...
这种做法在使用C语言编写的大型软件里面比较常见{:smile:} 等待戈多 发表于 2020-1-19 16:10
学习
感谢关注! 这个只能算是面向接口,new的地方需要传入 ** 指针的指针, c用了很多年了 实在不想改了要改也改行 呵呵 楼主位的例子一定要隐藏结构体声明内容的话,可以在create一个实例的时候返回一个类似Handle的值,所有的实例修改获取参数都需传递对应的handle值。windows很多资源和emwin窗口实例管理也是这样的,内部管理handle和实例指针的映射,具体实现可以参考下工厂模式。 感兴趣的同学可以了解一下GObject 多谢分享,学习 nic_911 发表于 2020-2-7 14:02
楼主位的例子一定要隐藏结构体声明内容的话,可以在create一个实例的时候返回一个类似Handle的值,所有的实 ...
感谢提供思路! shwind 发表于 2020-2-7 15:49
多谢分享,学习
感谢关注 JeffreySun 发表于 2020-2-7 14:17
感兴趣的同学可以了解一下GObject
感谢建议! 留个纪念。 面向对象是一种思想,,可这种思想好难,,,总觉得和面向过程没啥区别 路过,mark一下 不错,有时间过来细品
每次用句柄管理一个模块。
句柄我把它用成了类,但没有继承等C++那种功能。
句柄用宏定义定义。
##、#、...、是常用的
页:
1
[2]