语法层次、高级特性、使用场景、效率
(1)运行机制上:
C是面向过程编程语言,C++是面向对象编程语言。
(2)适用方向:
C语言适合程序体积小、运行效率高的场合,如嵌入式等更接近底层的环境;
C++适合更上层、更复杂的场合,以及一些具体业务的场景。
(3)编程语法上:
C++具有封装、继承、多态三种特性;
C语言不支持重载,C++支持重载;
C++相比C语言增加了许多类型安全的功能,如强制类型转换;
C++支持范式编程,如模板类、函数模板等;
(4)C++对C的增强:
标准C++引入了关键字namespace,可以更好的控制标识符的作用域;
实用性增强:C语言中变量必须在作用域开始的位置定义,C++可以随用随定义;
变量检测增强:C语言中可以定义多个同名全局变量,且都会链接到同一个地址,C++中不允许重复定义多个同名变量;
struct类型增强:C语言中认为struct为一组变量的集合,并不认定为新的数据类型,C++中认为是新的数据类型;
C语言函数不指定返回值类型就默认为int,C++中所有的变量和函数必须显示的指明,C语言中的默认类型不合法;
新增bool类型:C语言中真用非0表示,假用0表示,C++中新增bool关键字,真为true,假为false,bool类型占据1B;
三目运算符增强:C语言中三目运算符返回变量值,不可以作为左值,C++中三目运算符返回变量本身,变量本身非常量时可以作为左值;
const增强:C语言中const可以说是假的const,有自己的存储空间,可以通过指针去修改值,C++中const是真正的常量,在编译期间就已经确定了值,通常不为普通的const变量分配存储空间,而保存在符号表中。
真正的enum:C语言中枚举本质是整形,可以用任意整数赋值,C++中枚举是变量,只能用枚举出的参数进行赋值。
(5)C++对C的扩展:
引用:C++增加了引用,作为以定义变量的别名。引用的本质是常指针Type*const name;
inline:C++提供了inline函数,实现真正的内嵌,编译器直接将函数嵌入只函数调用地方;
C++提供了默认参数与占位参数;
C++提供了函数重载功能。