c语言和c++都是面向对象?
不是。
(1)c语言是面向过程的语言,是一个结构化的语言,考虑如何通过一个过程对输入进行处理得到输出;
c++是面向对象的语言,主要特征是“封装、继承和多态”。封装隐藏了实现细节,使得代码模块化;
派生类可以继承父类的数据和方法,扩展了已经存在的模块,实现了代码重用;
多态则是“一个接口,多种实现”,通过派生类重写父类的虚函数,实现了接口的重用。
(2)c语言和c++动态管理内存的方法不一样,c语言是使用malloc/free,而c++除此之外还有new/delete运算符;
(3)c++支持函数重载,c语言不支持函数重载;
(4)c++中有引用,c语言中不存在引用的概念。
c语言是面向过程,c++是面向对象。
面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:识认性,系统中的基本构件可识认为一组可识别的离散对象,对象具有唯一的静态类型和多个可能的动态类型,在基本层次关系的不同类中共享数据和操作。
C语言是面向过程的语言,C++是面向对象的语言,该怎么理解?
面向过程是相对于过程而言,你完成一件事需要哪些步骤你心里要有数,在敲代码时,你敲得一个个函数代表完成一件事所需要的一个个步骤,完成调用函数解决这件事情,也就是面向过程的体现。它强调的是功能行为。而面向对象是相对于面向过程而言,它将对象封装进对象里,强调具备功能的对象。
我们以“把大象放进冰箱”为例,简洁明了的说明二者之间的区别。
面向过程,具体步骤入下:
1. 把冰箱门打开;
2. 把大象放进去;
3. 把冰箱门关上;
对应的伪代码如下:
面向对象,是以关联的事物为线索:
1.人的属性:有打开冰箱、操作(将大象放入冰箱)、关闭冰箱的动作。
2.大象的属性:进入冰箱
3.冰箱的属性:开门、关门
面向对象乍一看写了很多, 但是换个角度,如果现在又来了个需求,要求放入冰箱的是其他动物,,面向对象仅仅是加入这个动物的类即可,整个流程不需要做任何修改,但是如果是面向过程,里面要添加一个逻辑的判断,后续代码的维护会越来越困难。
面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,你不用知道。
从代码层面来看,面向对象和面向过程的主要区别就是数据是单独存储还是与操作存储在一起。在类的里边,实现具体的功能还是需要流程化、具体化的代码去实现的,在类里还是需要具体的算法来实现的。总结来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象。
如果想学习其中的一门语言作为入门的话,C语言是个不错的选择。学习C语言的时候,看的是“如鹏网”的《C语言也能干大事》系列视频教程,讲的挺不错的,课程体系的设置可以极大的激发对编程的兴趣,通过开发超级玛丽,飞机大战,汤姆猫,用C语言开发网站,开发校园一卡通系统等来讲解C语言的基础知识点,学起来不枯燥,没想到C语言还可以这么学。
问题的提法不准确
准确来说,C不是面向过程的语言而是结构化语言。由于早期的PASCAL语言是以“过程”来定义程序功能单元的,因此结构化语言经常被误解为面向过程的语言。面向过程的语言是以FORTRAN为代表的一类语言。
首先,我们讨论一下面向过程,结构化和面向对象三种语言的特征。
面向过程的语言是以过程处理为导向对处理过程进行排序,数据流贯穿于处理过程。其特点是根据时间流或处理顺序对程序进行编制。典型代表是BASIC,FORTRAN,主要应用于有限元,数值积分等科学计算程序的编制。现存的面向过程的语言极为罕见。
结构化语言是将程序的处理机能进行分类并分别对其进行封装。同时,对数据按其归属进行分类、封装。最后,根据问题的逻辑机构关系对各封装块进行拼装。结构化语言的基本特征是以功能处理模块和数据结构模块为基本单元进行程序构建。其典型代表为C。
面向对象的语言是在结构化语言的基础上根据对象将结构化的功能和数据按其对象的归属进行分类后将其结构化并进行封装。面向对象可以被理解为较结构化更加深入的结构化。面向对象的语言是从C++开始的。
经过对三类语言的分析,我们不难看出,C和C++实际上是一种语言的两个阶段,C是婴幼儿,C++则是成熟后的C。