C语言与C++语言之间关系
很多时候我们对于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
C语言与C++语言之间关系的更多相关文章
- Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?
[编者按]本文作者@徐珂铭,一位看好Html5的移动互联网的从业人士.喜爱玩技术,会点JAVA.HTML及CSS,有自己的想法及姑且能表达想法的文字,因此有了自己的文章. 基于HTML5的Web Ap ...
- 云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)
云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什 ...
- C语言(C++语言)中##(两个井号)和#(一个井号)用法[转]
文章来源:http://blog.csdn.net/starboybenben/article/details/49803315 C语言(C++语言)中的宏(Macro)属于编译器预处理的范畴,属于编 ...
- [转帖]Hadoop、Hive、Spark 之间关系
Hadoop.Hive.Spark 之间关系 https://www.cnblogs.com/jins-note/p/9513426.html 很的很诙谐有趣. 作者:Xiaoyu Ma ,大数据工程 ...
- MySQL、sqlalchemy、pymysql、mysqldb、DBAPI之间关系梳理(终于明白了)
MySQL.sqlalchemy.pymysql.mysqldb.DBAPI之间关系梳理(终于明白了) python3不再支持mysqldb 请用pymysql和mysql.connector 问题背 ...
- 【C语言】C语言简介
目录: 1. [什么是C语言?] 2. [C语言历史] 3. [C语言标准] 4. [C语言特点] 1. 什么事C语言? · C语言是一门高级编程语言,用于人与计算机之间的沟通,就如同人与人之间沟通时 ...
- Swift语言指南(三)--语言基础之整数和浮点数
原文:Swift语言指南(三)--语言基础之整数和浮点数 整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,3 ...
- Swift语言指南(八)--语言基础之元组
原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...
- Java语言与C语言混合编程(2)--在Java中调用C语言本地库
在上一篇文章中介绍了Java语言中的native关键字,以及Java语言调用C语言的编译生成本地动态链接库(DLL)实现加法运算的小例子,本文通过一个更加详细的例子,深入讲解Java语言调用C语言的函 ...
随机推荐
- PHP如何防止XSS攻击
PHP防止XSS跨站脚本攻击的方法:是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 . 在使用htmlspecialchars()函数的时候注意第二个参数, 直接 ...
- 剑指offer面试题-Java版-持续更新
最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构 ...
- VB 如何调用 c++ DLL?
``` ```Class MainWindow 'ByVal 值传递 ByRef 引用传递 'Function 有返回值 Sub 无返回值 'C语言数据类型在VisualBasic中声明为调用时使用的 ...
- Qt 如何使用 lambda 表达式连接信号和槽?
connect(camera, static_cast<void(QCamera::*)(QCamera::LockStatus, QCamera::LockChangeReason)>( ...
- 【前端】Vue2全家桶案例《看漫画》之四、漫画页
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_4.html 项目github地址:https://github.com/shamoyuu/ ...
- Array.reduce()学习
昨天遇到的一道题:1234567890 => 1,234,567,890 要求其实就是使用逗号做千分位将数字进行分隔. 当时没想到任何方法,但是以前看到过,印象很深刻,今天就找了一下. 看到其实 ...
- cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...
- Android热修复(动态加载)方案汇总
整理了以下动态加载的方案,便于在项目中使用时查阅: Dexposed github (https://github.com/alibaba/dexposed) AndFix github (https ...
- CSDN博客添加量子恒道统计代码步骤
CSDN博客添加量子恒道统计代码步骤. 1. 去量子恒道网站统计 注册账户: 2. 添加已有的CSDN博客地址: 3. 添加博客后恒道代码里面会给你一个JavaScript脚本,记下里面的一串数字: ...
- Caused by: java.lang.ClassNotFoundException: org.jboss.logging.BasicLogger
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...