大家进来说说C和C++的区别
C和C++的区别有哪些方面呢?C++为什么不是完全兼容C?具体体现在哪里?还有通常都说C++的效率比C的低,排除C++一些比较高级的特性(比如多态,模板)具体的还体现在哪些方面? 问题点数:50、回复次数:31Top
1 楼Benjaminzbj()回复于 2006-12-02 13:20:08 得分 0
本来C++是做为一种面向对象的语言存在的,C则是面向过程的语言,但是为了想下兼容,C++又包含C,变得有点不伦不类了,呵呵
目前我还不知道哪个C语言的程序在C++下通不过的,
效率么~
当然C比C++高,最简单就是cin和scanf就差很多Top
2 楼iambic()回复于 2006-12-02 13:57:15 得分 0
为了成为另一门语言,区别是必然的。Top
3 楼my_web(交流qq:517664276)回复于 2006-12-02 14:05:26 得分 0
1,c面向过程,C++体现了面向对象的思想。
2,C++工程头文件和实现分开,c语言一般不分。
3,两则都有一些自己独有的东西Top
4 楼listart(开始)回复于 2006-12-02 14:22:54 得分 0
C++是C语言的一个超集,教科书上都这么说Top
5 楼guojianrong()回复于 2006-12-02 14:33:28 得分 0
C和C++从书写形式,风格上就不一样,它们既然是两种不同的语言就必定有它们的区别!不然怎么会叫不同的名字?只不过C++是C的延伸。。。。。。。。。。。。。。。。。。。。。。。。。。。。Top
6 楼Nzm(一鸣)回复于 2006-12-02 15:22:15 得分 0
大家不要泛泛而谈。最好举出具体例子或深入点。Top
7 楼steedhorse(晨星)回复于 2006-12-02 15:28:17 得分 0
可是这个问题无法在论坛上深入。
一深入至少是500页的书。
本来就是两种不同的语言,只不过一种基本兼容了另一种而已。
如果楼主想要寻找C中有而C++中无或者C++中不同的特性,可以参考一下《The C++ Programming Language(Special Edition)》一书的附录。
而如果想要寻找C++中有而C中无的特性,那就太多太多了,我觉得既使全在这里列出来也没啥意义。Top
8 楼Nzm(一鸣)回复于 2006-12-02 15:42:23 得分 0
哦,那就讨论这个问题吧:不考虑C++的类,模板,C++效率比C低体现在哪里?比如说C++能重载,而C不能,C++对函数都采用了XX技术,这样的话C++调用函数的效率是不是比C的低了?Top
9 楼owlling(owlman)回复于 2006-12-02 15:49:24 得分 0
hoho.
最近还真打算一篇这样的文字、现在有很多误区就在这个问题里,特别是在国内大学的教科书里。主要如下:
第一,c不是c++的子集,只是语法子集而已。
第二,c的程序库可以被c++调用,但不是直接的,至少要绕过名字重整的阶段
第三,c++的表达力比c丰富,但并不意味着他一定比c功能强大,
==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================Top
10 楼crazy_lazy_pig(疯狂懒猪)回复于 2006-12-02 16:03:04 得分 0
我认为世界上所有的语言都一样, 都是分支、循环、加现成的算法模块。Top
11 楼owlling(owlman)回复于 2006-12-02 16:07:17 得分 0
to ls,你那应该说语法,不是语言。
==================================
欢迎访问我的个人主页:http://www.lingjie.net/
==================================Top
12 楼libinzhangyuan(zyfire)回复于 2006-12-02 20:37:49 得分 0
效率差异其实是不被考虑,c++效率本身是低点;但写完后,c或c++代码经过优化,效率能基本相等。 然而由于c++程序的组织结构要好点(可读性更好),一个结构更好的软件,更有可能找到更好的优化方案。:)
主要被考虑的差异在于:
c的优点在 其兼容性最好(代码级的兼容,不是二进制级的)。
c的语义相对简单,标准语义定义非常完备,较少留给编译器开发者自由发挥空间;而c++语义复杂,虚礼继承,模板等复杂语义里还有细节没有定死,各个编译器有自己的一套。c++代码搬到不同的编译器里面编译有不同的结果是很有可能的。
结果就是很多非电脑平台(镶入式平台,手机等)都有c编译器,而没有c++编译器(不过现在的智能手机都有c++编译器了)。当然可能有c++编译器较难写的原因。
另外虽然c设计来是面向过程的语言,但实际工程上面写c代码是用基于对象(注意不是面向对象)的准则来写的;可以模拟类(至少虚拟接口,和虚拟接口下的多态好实现),类继承关系好像没人用c代码模拟(实现了就变成面向对象的准则了)Top
13 楼xyjchinese(春天把老婆种到地下后我就急切的盼望秋天的到来)回复于 2006-12-03 01:03:40 得分 0
cpp:兼容C、struct里可以有方法,有class(虽然C可以模拟,但那总之是模拟的),还有很多,这两个记得最清楚了。
再说了C和C++根本就是不同的语言,区别大了。
你说VB和VC有什么区别?呵呵~~~区别多的说不了了。Top
14 楼superxiaomm(小美)回复于 2006-12-04 16:04:46 得分 0
jfTop
15 楼FantasyNES()回复于 2006-12-04 16:17:43 得分 0
C++为什么比C效率低?
代码写的有问题吧?Top
16 楼dead_of_winter(寒冬)回复于 2006-12-04 16:29:37 得分 0
前几天学嵌入式,源码是c的
扩展名改成cpp之后重新编译n多错误 头疼中......Top
17 楼v2002750(长安古道马迟迟)回复于 2006-12-04 16:44:36 得分 0
大帽子话不说,C++程序组织起来比C容易。Top
18 楼aniude(重返荣耀)回复于 2006-12-04 16:53:21 得分 0
C++兼容C,所以保留了一部分C,这个也是有人为什么不喜欢他的原因吧Top
19 楼kenneth_lueng()回复于 2006-12-04 17:08:36 得分 0
大家都说c++是面向对象,c是面向过程,其实这种说法不太合适
实际上 “面向对象”只是一种思想,而且C++之父也说过:
程序其实是可以面向对象和面向过程的组合,两者非但不冲突,而且互相兼容的
可能是因为C++在语法上就支持面向对象,而c语言在语法上不支持面向对象的原因吧
Top
20 楼OOPhaisky(异化$渴望成功~~)回复于 2006-12-04 17:36:56 得分 0
C和C++的区别有哪些方面呢?
答:个人认为,C++与C最大的不同是,C++在语言级别对OO和GP提供了直接的支持。
C++为什么不是完全兼容C?具体体现在哪里?
答:主要是struct的内存布局问题。c++中,编译器可能会在class里面加入一些其他的东西(如vtable,虚表等等)。
还有通常都说C++的效率比C的低,排除C++一些比较高级的特性(比如多态,模板)具体的还体现在哪些方面?
答:据个例子,C++中的虚拟函数调用需要额外一层的间接调用,因此速度肯定下降。这是合理的,在获得OO和GP的好处的同时,损失一些性能是你必须付出的代价。
Top
21 楼femalelover(楼主, 请把用不着的可用分捐给我1/3 :()回复于 2006-12-04 23:10:12 得分 0
好像在某本很著名的书说看到这么一段:C++之父B博士在设计C++之初就要求C++比C的效率快5%.
看到楼上都是C比C++快, 莫非是我记错了?Top
22 楼cime63(流浪的孩子)回复于 2006-12-04 23:21:00 得分 0
有所得必有所失Top
23 楼taodm((不能收CSDN社区短信息,请莫浪费精力))回复于 2006-12-05 08:53:24 得分 0
效率一词,是很没有意义的。C++的效率和C在正负10%之间。
说虚函数导致速度下降的,都是没想过C如果实现同样功能将如何写代码的。
C只能switch...case,速度远慢于虚函数。Top
24 楼akirya(坏[其实偶不是什么所谓的坏人])回复于 2006-12-05 10:04:14 得分 0
两种不同的语言,没什么可比性Top
25 楼gapwind()回复于 2006-12-05 10:32:01 得分 0
有没有人来做个总结啊,权威点的Top
26 楼hada1357()回复于 2006-12-05 10:55:12 得分 0
在面向对象方面C++并不纯!象友员的介入完全是因为程序编写的需要而产生,C++之父创造C++的时候并没想让他完全符合面向对象的框架,只是尽自己所能为未来使用者创造便利;这也是直到今天它有如此巨大成功的关键!Top
27 楼hada1357()回复于 2006-12-05 11:00:51 得分 0
从效率的角度着想!一样的程序在C与C++中运行C++确实慢!但是不会慢的离谱,差距在%10左右;
至于C++的多态的速度是很慢的,它影响程序的效率,为什么还要用呢?因为需要;为了达到目的而牺牲一定的时间是可以接受的!!Top
28 楼listart(开始)回复于 2006-12-05 14:05:11 得分 0
最后补充点:
c++中常见这种形式代码:extern "C"
c++代码是可以用c编译部分代码的,而相反c不能部分代码编译c++,所以说c++是c的超集
同时LIB文件都是以c形式编译,C和C++实际编译时的函数命名是不同的Top
29 楼FantasyNES()回复于 2006-12-05 16:46:02 得分 0
hada1357() ( ) 信誉:100 Blog 2006-12-05 11:00:51 得分: 0
从效率的角度着想!一样的程序在C与C++中运行C++确实慢!但是不会慢的离谱,差距在%10左右;
至于C++的多态的速度是很慢的,它影响程序的效率,为什么还要用呢?因为需要;为了达到目的而牺牲一定的时间是可以接受的!!
-------------------------------------------
你說一樣的程序是什麽意思?
只是把C文件名改稱C++也會慢10%?真搞笑Top
30 楼taodm((不能收CSDN社区短信息,请莫浪费精力))回复于 2006-12-06 08:27:10 得分 0
hada1357()“至于C++的多态的速度是很慢的,它影响程序的效率”,
你用C完成同样功能试试吧,比C++的虚函数要更慢Top
31 楼steedhorse(晨星)回复于 2006-12-06 08:59:52 得分 0
俺比较同意楼上的话。:)Top




