1、C语言
C语言是面向过程的语言:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个个的依次调用就可以了。面向过程就是自顶向下的编程。
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。
缺点:没有面向对象易维护,易复用、易扩展。
2、C++
C++是面向对象的语言:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。面向对象就是高度实物抽象化。
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活,更加易于维护。
缺点:性能比面向过程低。
3、C和C++区别
3.1、文件名的后缀
C++的源文件使用 .cpp 文件后缀。C语言的源文件使用 .c 文件后缀。
3.2、返回值
如果不写返回值,C语言中可以这样做,会返回一个 int 类型的值,但在C++中,无法这样做,会直接编译失败,因此当函数没有返回值的时候,需要显示的给出 void 的返回值。
3.3、参数列表
无参数列表的时候,在C语言中可以给任意多个参数都可以接受,但在C++中,如果没有参数列表,表示该函数不接受任何返回参数。
3.4、缺省参数
声明或定义函数时为函数的参数指定一个默认值,在调用函数时,如果没有指定实参则使用默认值,否则就会使用传进去的实参(C++支持)。
3.5、函数重载
C++允许在同一个作用域中声明几个功能类似的同名函数,且这些同名函数的形参列表必须不同,常用来处理实现功能相似,数据类型不同的问题。
3.6、引用
C语言对于函数传参有两种方法:值传递和地址传递。而在C++中除了指针,还有引用,引用时给已经存在的变量取了一个别名,两者一定为同种类型,编译器不会给引用变量新开辟内存空间,其与引用的变量共用一块空间。
指针 | 引用 |
可以不初始化 | 必须初始化 |
可以指向其他变量 | 不能指向其他变量 |
存在NULL指针 | 没有NULL引用 |
有多级指针 | 没有多级引用 |
自增引变指向 | 自增引变变量内容 |
3.7、命名空间与输入输出
由于C++存在大量的变量、函数和类,他们的名称都是存在于全局命名空间中,很容易形成命名冲突,因此引入命名空间的概念,其定义了一个范围,在命名空间中定义的东西只在命名空间范围内有效。
std是标准命名空间,在此命名空间下,C++可使用不同于C语言的输入输出方法:cout为输出流对象,cin为输入流对像,<<,>>分别为输入输出操作符。
3.8、关键字
C99有32个关键字,C++有63个关键字。