C和C++的区别?
引言
最基本的认识:C语言是面向过程的,C++是面向对象的,当然C++也支持面向过程编程。
基本概念理解
面向过程,是一种以过程为中心的编程思想,也就是说侧重解决一个问题所需的所有步骤,用代码把这些步骤依次实现。
面向对象,侧重于把问题的事务分成各个对象。建立对象抽象一点的说法就是描述某个事务在解决整个具体问题步骤中的行为,而不是完成其中的一个步骤。面向对象的显著特征就是支持封装、继承、类的抽象。形象一点的说法就是建立一个对象,我只需要知道这个对象能做什么就可以了,里面的细节我不关心。
举个栗子,制作一杯咖啡,面向过程的步骤是:烧水 -> 磨豆 -> 冲泡 -> 加糖,
面向对象的过程是:水壶(烧水)、咖啡机(磨豆、冲泡)、糖罐(加糖)。
对象的本质就是描述事务的行为,就像水壶是用来烧水的,咖啡机可以实现磨豆和冲泡,糖罐负责提供糖,这里面的内部如何实现的我不需要知道,就像我想要磨豆和冲泡,我就写咖啡机.start(),就能实现。
C和C++的比较
C++继承了C大部分的语法,也继承了C强大的底层操作特性,二者之间的关键字和运算符的功能和作用也几乎相同;二者的内存模型与硬件比较接近,几乎可以直接操纵硬件。堆、栈、静态变量这些概念在这两种语言中都存在。
C和C++的不同
C是面向过程的,不支持面向对象,不支持继承、多态、封装。
C++的类型检查更严格。C里面的类型转换几乎是任意的,C++编译器对类型转换会严格检查。有些强制类型转换能在C编译器通过,但在C++编译器就无法通过。
C和C++都有结构的概念,但C语言中结构只有成员变量,没有成员方法,C的成员变量没有权限控制,该结构体的变量对所有调用全部可见。C++中的结构可以有自己的成员变量和成员函数,且对类的成员变量有访问权限控制。
C语言程序的底层实现和内存分布基本都可见,常用于直接控制硬件,C在嵌入式领域应用很广,如常见的驱动开发等与硬件直接打交道的领域;C++可应用于应用层开发,用户界面开发等与操作系统打交道的领域,特别是图形图像编程领域,几乎所有的高性能图形图像库都是用C++实现的。
欢迎批评指正!
--------------------------------------------- END ---------------------------------------------