c++和c语言的区别
c++和c语言的区别有:1、面向过程和面向对象的区别;2、具体语言上的区别;3、主体不同;4、优势不同;5、特点不同。其中,具体语言上的区别有关键字、后缀名、返回值、参数列表、缺省函数、重载函数、const、malloc,free && new,delete、作用域的不同。
1、面向过程和面向对象的区别
c语言:c语言是面向过程的语言,面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
c++:C++是面向对象语言,面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
2、具体语言上的区别
- 关键字的不同:
c语言:C语言有32个关键字。
c++:C++有63个关键字。
- 后缀名不同:
c语言:C源文件后缀.c
c++:C++源文件后缀.cpp,在VS中,如果在创建源文件时什么都不给,默认是.cpp。
- 返回值:
c语言:C语言中,如果一个函数没有指定返回值类型,默认返回int类型。
c++:C++中,如果一个函数没有返回值则必须指定为void。
- 参数列表:
c语言:在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数。
c++:在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为 void,不接收任何参数。
- 缺省函数:
c语言:C语言不支持缺省参数
c++:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的参。
- 重载函数:
c语言:C语言没有函数重载。C语言中产生函数符号的规则是根据名称产生,这也就注定了c语言不存在函数重载的概念。而C++生成函数符号则考虑了函数名、参数个数、参数类型。需要注意的是函数的返回值并不能作为函数重载的依据,也就是说int sum和double sum这两个函数是不能构成重载的!
c++:函数重载是函数的一种特殊情况,指在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,返回值类型可以相同也可以不同,常用来处理实现功能类似数据类型不同的问题。C++支持函数重载。
- const:
c语言:C语言中被const修饰的变量不是常量,叫做常变量或者只读变量,这个常变量是无法当作数组下标的。
c++:在C++中const修饰的变量可以当作数组下标使用,成为了真正的常量,这就是C++对const的扩展。
- malloc,free && new,delete:
c语言:malloc()和free()是C语言中动态申请内存和释放内存的标准库中的函数。
c++:new和delete是C++运算符、关键字。new和delete底层其实还是调用了malloc和free。
- 作用域:
c语言:C语言中作用域只有两个:局部,全局。
c++:C++中则是有:局部作用域,类作用域,名字空间作用域三种。
3、主体不同
c语言:是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。
c++:是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计。
4、优势不同
c语言:能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
c++:不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
5、特点不同
c语言:提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
c++:在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。