CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

大家进来说说C和C++的区别

楼主Nzm(一鸣)2006-12-02 13:11:34 在 C/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

相关问题

关键词

得分解答快速导航

  • 帖主:Nzm

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo