我知道C ++有对象的概念,但C没有。我也知道几乎所有人都知道C适合K & R,但C ++库要复杂得多。但是必须有其他重大差异。
C和C ++之间的主要区别是什么?
答案 0 :(得分:24)
C ++语言表明它们是相同的:
int C = 0;
assert(C++ == C);
答案 1 :(得分:24)
查看Stroustrup的常见问题here,具体来说:
C和C ++有什么区别?
C ++是C的直接后代 保留了几乎所有的C作为子集。 C ++提供更强大的类型检查 比C和直接支持更广泛 编程风格范围比C. 从某种意义上说,C ++是“更好的C” 它支持编程风格 使用C进行更好的类型检查 和更多的符号支持(没有 效率损失)。在相同的 感觉,ANSI C是比K& R更好的C. C.此外,C ++支持数据 抽象,面向对象 编程和通用编程 (参见C ++编程语言(第3版) 版)“;附录B讨论 兼容性问题可用 下载)。
答案 2 :(得分:15)
我认为你回答了自己的问题:课程
它是一个完全不同的设计范例。我认为混乱是因为许多人开发的C ++程序基本上都是C程序,甚至没有意识到。
在其创作者的话语中,Stroustrup:
编辑:添加了一些其他有趣的东西
答案 3 :(得分:7)
简而言之,C希望成为一种“便携式汇编语言”。它使事情变得简单,让你做几乎直接映射到底层硬件的东西,并没有提供很多高级抽象(你有功能和....就是这样)
C ++试图成为一切。高级语言,低级语言,面向对象语言,多范式语言,系统编程语言,嵌入式编程语言和应用程序开发语言。
除了一些共享语法之外,这两种语言并没有太多共同之处。一个C程序可能只用很小的改动编译为C ++,但它与为该语言编写的“适当的”C ++代码没有任何共同之处。
答案 4 :(得分:7)
这是一个显示c和c ++之间“不兼容”的网站:
http://david.tribble.com/text/cdiffs.htm#C++-vs-C
实际上有很多领域c和c ++分歧(除了类,模板,异常等)。
就主要差异而言,这里列出的内容很好:
答案 5 :(得分:3)
模板是另一个很大的区别(除了类/对象)。模板支持例如typesafe泛型容器类型(它们的第一个用例)和(bastardized)lambda表达式(boost::lambda
)。
C ++是一种比C语言更大的语言(不仅仅是库)。
答案 6 :(得分:3)
这个问题没有简短的答案。
一般来说C ++支持:
- OOP范例;
- 通用程序;
- 模板乙醇程序设计;
- 抽象数据类型;
- 新的图书馆和标准支持功能范式的元素;
- 使您的计划最可支持的其他工具;
- 你也可以编写类似C风格的程序,但使用C ++ compiller;
但纯粹的C - 比C ++快一点,更低级别。
答案 7 :(得分:3)
C ++与C相比的另一个特性是以throw ... catch的形式进行异常处理。
答案 8 :(得分:3)
C ++不仅仅是C类。 C ++中还有许多其他概念,如模板,函数和运算符重载,异常以及此处已提到的许多其他概念。这使得C ++非常强大和灵活,但也很难学习。并不是单个概念难以理解,而是它们的总和以及它们如何一起玩。看一下boost,看看C ++可以做些什么。我想这需要很长时间才能理解引擎盖下发生了什么,这在C的情况下非常清楚。
或者简而言之:C ++不仅仅是带有类的C,或者换句话说C ++远不是Java加上内存管理。
答案 9 :(得分:2)
在C++ for C programmers的两部分的第一部分中,列出了一些非OOP差异:
- 函数的默认参数
- 功能重载
- 您可以在代码中的任何地方声明局部变量,而不仅仅是在函数的开头(也是C99特性)
- 参考文献,如
int& x
- 一般的正确性
- 命名空间
- 内置布尔类型
bool
,包含true
和false
个关键字(同样在C99中通过stdbool.h)- 内联关键字和关联的怪癖,包括隐式内联和自动内联
- 比C
更大的标准库