chenliangliang_ 发表于 2019-12-25 09:30:29

为什么不用C++

1148729990 发表于 2019-12-25 13:44:23

感谢分享

广轻电气091 发表于 2019-12-25 14:40:54

chenliangliang_ 发表于 2019-12-25 09:30
为什么不用C++

大型的应用软件开发,建议使用支持面向对象特性的编程语言

广轻电气091 发表于 2019-12-25 14:41:16

1148729990 发表于 2019-12-25 13:44
感谢分享

感谢关注

广轻电气091 发表于 2019-12-25 14:41:52

zly_1980 发表于 2019-12-25 09:28
其实不是,最简单的就是c++只是把c语言的数据跟方法放在一个叫class的东西去了,在c语言里分成2个部分:一 ...

C++并没有那么简单

zly_1980 发表于 2019-12-25 14:49:12

广轻电气091 发表于 2019-12-25 14:41
C++并没有那么简单

只是最简单的一个举例,不代表全部。{:smile:}

jjj 发表于 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;
类似这样的,勉强称作对象

L_Hongzhen 发表于 2020-1-6 12:07:31

本帖最后由 L_Hongzhen 于 2020-1-6 12:08 编辑

顶一下!通过结构体+函数指针的方式,可以实现了面向对象的编程思想,类似于C++的类。

广轻电气091 发表于 2020-1-6 13:06:37

jjj 发表于 2019-12-25 16:30
对象则是数据和动作的结合体。
你这只有数据,
typedef struct


文章最后说明了,并没有把函数放在结构体进行封装

广轻电气091 发表于 2020-1-6 13:07:08

L_Hongzhen 发表于 2020-1-6 12:07
顶一下!通过结构体+函数指针的方式,可以实现了面向对象的编程思想,类似于C++的类。 ...

感谢关注!

四叶草35 发表于 2020-1-19 15:54:58

Mr.D 发表于 2019-11-29 10:37
结构体里包含函数指针,应该挺常见的吧

这种写法不常见,调试的时候很头疼,不能调整,不能打断点,试试你就知道了

等待戈多 发表于 2020-1-19 16:10:53

学习         

njlzzdh 发表于 2020-1-19 22:19:25

kevin_me 发表于 2019-11-29 09:32
想问一下 为什么结构体指针引用成员时,不用加(*),而一般的单个变量指针取值时要加(*)?

书上这么规 ...

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

广轻电气091 发表于 2020-1-20 09:18:09

四叶草35 发表于 2020-1-19 15:54
这种写法不常见,调试的时候很头疼,不能调整,不能打断点,试试你就知道了 ...

这种做法在使用C语言编写的大型软件里面比较常见{:smile:}

广轻电气091 发表于 2020-1-20 09:18:25

等待戈多 发表于 2020-1-19 16:10
学习

感谢关注!

hyf88 发表于 2020-1-21 10:25:48

这个只能算是面向接口,new的地方需要传入 ** 指针的指针,

xml2028 发表于 2020-1-21 13:49:45

c用了很多年了   实在不想改了要改也改行 呵呵

nic_911 发表于 2020-2-7 14:02:50

楼主位的例子一定要隐藏结构体声明内容的话,可以在create一个实例的时候返回一个类似Handle的值,所有的实例修改获取参数都需传递对应的handle值。windows很多资源和emwin窗口实例管理也是这样的,内部管理handle和实例指针的映射,具体实现可以参考下工厂模式。

JeffreySun 发表于 2020-2-7 14:17:02

感兴趣的同学可以了解一下GObject

shwind 发表于 2020-2-7 15:49:05

多谢分享,学习

广轻电气091 发表于 2020-2-7 18:19:05

nic_911 发表于 2020-2-7 14:02
楼主位的例子一定要隐藏结构体声明内容的话,可以在create一个实例的时候返回一个类似Handle的值,所有的实 ...

感谢提供思路!

广轻电气091 发表于 2020-2-7 18:19:24

shwind 发表于 2020-2-7 15:49
多谢分享,学习

感谢关注

广轻电气091 发表于 2020-2-7 18:19:45

JeffreySun 发表于 2020-2-7 14:17
感兴趣的同学可以了解一下GObject

感谢建议!

kyq_linux 发表于 2020-3-3 14:56:09

留个纪念。

ALyang 发表于 2020-8-11 17:58:31

面向对象是一种思想,,可这种思想好难,,,总觉得和面向过程没啥区别

batou 发表于 2020-8-14 17:12:11

路过,mark一下

xaviersw 发表于 2020-11-8 15:33:08

不错,有时间过来细品

SCREA 发表于 2021-10-15 11:48:31

每次用句柄管理一个模块。
句柄我把它用成了类,但没有继承等C++那种功能。

句柄用宏定义定义。
##、#、...、是常用的
页: 1 [2]
查看完整版本: C 语言面向对象编程 - 封装