很多时候我们对于C和C++的区别不是很清楚,以至于弄混的情况并不少见。那C语言和C++语言到底是怎么回事呢?
首先,我们来看下百度百科对语言和C++语言描述,相对而说也还算是比较权威的。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。
因此,可以看出 “C++语言主要是以C语言的基础发展起来的一门新语言" 这一说法无疑是毋庸质疑的。
至于如下说法,本人觉得并不可取:
1. C++是C的替代品
2. C++是C的升级
3. C++比C更先进
4. C++是C的超集
5. ...
其中最最重要的是二者之间根本没有共用一套装标准,并且各自的标准委员会都是独立的。
C语言最新标准
ANSI C是美国国家标准协会(ANSI)对C语言发布的标准。使用C的软件开发者被鼓励遵循ANSI C文档的要求,因为它鼓励使用跨平台的代码。在2000年三月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99,它是C程序语言的现行标准
C++语言最新标准
C++11,也称为C++0x。为目前C++编程语言的最新正式标准(ISO/IEC 14882:2011)。它将取代第二版标准ISO/IEC 14882:2003(第一版ISO/IEC 14882:1998公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++ Technical
Report 1程序库(数学上的特殊函数除外)。C++ 标准委员会计划在2010年8月之前完成对最终委员会草案的投票,以及于2011年3月3召开的标准会议完成国际标准的最终草案。最终于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于现行标准的草案(编辑上的修正)。此次标准为13年第一次重大修正。
基于以上语言描述和语言标准二个方面来看,C语言与C++语言应该是二种不同的语言(估计有人会说,搞这么多废话)。事实上,我建议大家把他们当作二种语言来看待,这样你就会有更深的一个层次认识了。之后,我们再来看看他们之门的区别(终于讲重点了),由于C++标准是兼容C标准的,因此区别并不是很大。
1. C是面向过程编程;C++是面向对象编程;(最最重要的区别)
面向过程
“面向过程”是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
面向对象
面向对象是一种对现实世界理解和抽象的方法,通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于人理解的方式对于复杂系统的进行分析、设计与编程。
2. C++语言标准兼容C语言标准,因此C++可以使用C的一些库(某些是要进行一些处理的)。反之不行
3. C++由于面向对象,自身是有一些面向对象的三大特性,如:封装,继承,多态。C语言是没有的。
4. C++的一些const,enmu等扩性,C是没有的。
5. C++的一些语法方面,C也是没有的。
综上,
只要抓住C是面向过程编程;C++是面向对象编程;其它什么的都是浮云了。
from:http://blog.csdn.net/xiaoting451292510/article/details/8627123