83

帖子

0

TA的资源

一粒金砂(初级)

21
 


12楼: 楼上你好,所有的程序都有封装和继承。

你写个SPI的驱动(类),这样你就可以在这个基础上不断的继承与发展下去,这些工作是你做的,

难道 C++的‘继承’是CPU依靠自己的“智慧”把代表继承下来的吗? 还不是微软的那帮程序员把代码都写好,
然后,你就可以使用它们忽悠的所谓C++‘继承’,当然不用写什么东西,
好比  按钮 ‘继承’了窗体的某些’特性‘代码。

所有的程序都有封装。
某些变量,函数如果不想告诉被其他外部程序调用,不对外公布入口就可以了,
好比上面说的SPI驱动(类), 只向外提供一个读,一个写,函数不就可以吗?

内部具体的SPI FLASH微代码操作,没必要告诉谁吧,也没必要向外提供吧,这不就是封装了吗?

我看楼上被人忽悠的迷迷糊糊的!
--------------------
十分感谢这位仁兄的指点
我想说的是,你所说的继承是软件工程管理意义上的继承,我说的是代码的无缝直接继承。就是拿来直接可以用的。我知道C这方面也有拿来很容易使用的code,但是你要向上扩展,你多多少少是要改一点code的。而C++不一样,我根本不需要管class里面是怎样的code,直接继承调用它的public函数就ok。甚至可以生成N个同样的对象,放在一个C++容器里面。
这个最直接的例子就是,C++的数据结构类,继承完了一个数据元素,直接放在容器里面,可以动态增长删除。方便着呢。虽然C语言也能做到,但是总感觉数据和代码的打包性能不如C++的好。所以你看现在很多程序员用到的基本数据类型(如队列、栈、链表、树等),极少用C来写,都用C++了。

还有C语言里面的string操作,要用到strcpy,strcat,strcmp,memcpy等叽叽歪歪的函数,而c++只要用=来赋值,用<,>,来判断哪个字符串大哪个字符串小。用==来判断字符串是否相等。用专门的字符串类也懒得管理字符串占用的内存。总之2个字,方便。。。而C语言,在这方面做得很烂。一不留神就出个内存问题。

所以只要CPU允许,我都尽量用C++的。C语言是倾城,但是C++倾国。。。。
此帖出自stm32/stm8论坛
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

22
 


13楼: 本帖最后由 netjob 于 2009-11-2 14:27 编辑

我说的道理很简单,
不管像11楼说的多复杂的所谓C++封装和继承。最终都要被编译到二进制的机器代码。

也就是说,不管多复杂的高级语言编程。 使用最原始的机器码编程照样可以实现一模一样的功能。
一模一样大小与效率的代码。 是不是?

因为CPU是没有智慧与灵魂的机器。它不会升级,使用高级语言它是不会发展到使用高级的方法来理解的。
最终这个笨机器还是要把高级语言翻译为那个0/1的机器码才能理解啊!

懂吗?13楼的大道先生!
----------------------------
建议13楼用汇编,在汇编的层次做好封装和继承。。。。。
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

23
 
楼上举例的C++串方便,还不是与C一样的代码实现方法!  难到就不可以用一个封装好的C函数来实现C++那些串的所谓简单明了用法?
这个是别人写好的程序你调用,和你自己写的程序调用。

反正在PC 软件, VC++6.0 和MFC确实是这样:
目前MFC已经完全被微软淘汰掉了。这个是事实。取而代之的是DOT NET FRAMEWORK.
是吸取了JAVA/VB,DELPHI VCL,BCB的众多长处而来的。

但是 BCB确实是不错的。不知为何INSPRIE后期咋样没有多大升级了!

可见这些C++在不断改进。。
此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

24
 
C++的好处还是有的,起码他跑起来比java快得多。


-------------------
难到就不可以用一个封装好的C函数来实现C++那些串的所谓简单明了用法?
这个是别人写好的程序你调用,和你自己写的程序调用。

你可以去网上找开源的code,实现复杂的数据结构,用C++的居多。
------------------------
假如我在南昌,我知道,骑自行车可以到北京,火车也可以去北京,飞机也可以去北京。但是三者代表了三个不同的效率和速度。所以,存在的就是合理的。这就是C++存在的理由。。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

25
 
                                 C++的好处还是有的,起码他跑起来比java/C# /.net快得多。
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

26
 
对于那些所谓字符串操作方便的说法。
我看过VC的CString内部实现的源码,所谓动态添加、增长,其实就是先判断自己的buff是否满足要求,满足要求则直接操作;不满足则先delete buff,然后再new一个buff,接着操作……具体实现不过是把C封装起来罢了
至于CString str3=str1+"hello,world!";这种应用,不过是编译器帮了个大忙,让你用这样的语法写就可以产生相应的C代码罢了。
所以所谓xx思想是存在人脑中,而不是在编程语言中。各种编程语言都有自己的优点和缺点,没有什么好争论的,青菜萝卜各有所爱。
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

27
 
                                 我还是用0101机器码编程去、、、
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

28
 
27楼: 对于那些所谓字符串操作方便的说法。
我看过VC的CString内部实现的源码,所谓动态添加、增长,其实就是先判断自己的buff是否满足要求,满足要求则直接操作;不满足则先delete buff,然后再new一个buff,接着操作……具体实现不过是把C封装起来罢了
至于CString str3=str1+"hello,world!";这种应用,不过是编译器帮了个大忙,让你用这样的语法写就可以产生相应的C代码罢了。
所以所谓xx思想是存在人脑中,而不是在编程语言中。各种编程语言都有自己的优点和缺点,没有什么好争论的,青菜萝卜各有所爱。

--------------------------
别人封装过了,就说明他的适应性更强。就好象恐龙进化到了哺乳动物,那哺乳动物一定更高级一样。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

29
 
C没有C++的封装和继承,所以程序的架构是会有差别的
封装和继承是一种编程思想,而不是某种程序语言的特有行为
既然是一种思想,那么即便用汇编也可以表达,就像你要对女孩儿说“我爱你”的话,你用中文可以说,难道用英文说出来就变成“我恨你了”吗?
C语言的程序也可以体现封装和继承的思想,而且可以体现的很好。

C++的先进性在于他对封装和继承的思想做了强制约束,使它的的实现不在依赖于编程者的思维方式,而是用更为通用的模板,这样提高了程序的可读性和可维护性还有安全性。但这些为了安全性可维护性可读性做的强制约束,并不是封装和继承的本质,而是为了实现它的一种手段。

其实研究下编程语言的发展就知道,总是从提高可读性和可维护性的角度出发,但对于编程思想的体现,我认为任何语言都是可以的。

所以,不是面向对象的语言,也可以写面向对象的程序,只是那些支持面向对象的语言,有更好更清楚更安全的表达方式而已。面向对象也只是一种思想,而不是某种语言的语法,我最开始学习面向对象的时候,那本书是用伪代码写的。

如果觉得面向对象就一定是C++,C#,java的人,我只能说没有学到本质,面向对象思想和编程语言无关,这就是为什么有UML这种东西的存在,而且很流行。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

30
 
Open Source的Prj用C++的确实比较少
追求效率的人用纯C,追究Object Oriented的用JAVA之类

比如C++的虚函数的处理,靠的是virtual Table问题,如果继承了N层后
那个函数的定位,就是指针的指针的指针的指针的指针的指针的..........

我一个项目发现用CPP后code size会变很大,后来改用C写,套用了CPP的思想
我在里面用了很多this指针,基本上用C和CPP都可以编译,算是为以后留条后路吧,呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

31
 
JAVA对虚函数的处理,采用了另外一种方案,靠的是名字
所以,如果只是继承了一层的虚函数,CPP的性能远大于JAVA,但继承了N多的层次后,JAVE开始反超CPP了

我们写代码时候也要考虑到语言的特性,扬长避短,为我所用。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

32
 
                                 到零点了还在回帖呀,辛苦啊
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

33
 
                                 好古老的贴,都是去年过年的事了,马上又要过年了
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

34
 

顶你。
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

35
 
C++是个好东西,不过不太敢用
就说string吧,支持+-=比strcpy之流方便多了
但是你如果看它的内部实现就会发现大量调用new/delete
另一个好用不敢用的就是vector
一样的原因
就连IAR自己的Help都说对于长期运行系统不建议使用C++
因为很容易就会造成内存碎片
前阵子曾经想过ucos+重载new/delete绕过这个问题
忙。搁下了。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表