最大的区别就是在设计思路上:C语言面向过程,C++面向对象
所以C语言解决问题的思路是:把问题分拆分几个步骤,通过函数把这些步骤依次实现。
而C++解决问题的思路是把问题涉及的各个事务用对象描述出来,通过对象的交互解问题。
所以在语法方面,C++支持继承、多态,并且对struct的功能进行了扩充,和class的区别就是struct默认的成员访问权限是public,class是private。
C和C++还有一些具体的区别:
内存管理方面,C语言通过malloc/free进行申请释放,C++通过new和delete,C++支持引用,引用比指针更安全。还有强制类型转换,C语言是通过隐式类型转换和手动强转实现,C++规范出四种类型转换const_cast、static_cast、reinterpret_cast 和 dynamic_cast
输入输出方面,C语言用的是printf和scanf这样的库函数,C++用的是cin/cout这些流的对象。
函数方面,C++支持缺省参数、函数重载、运算符重载、内联函数,C语言不支持。
作用域方面,C++多了一个类作用域,C++还可以使用命名空间来避免命名冲突
还有就是C++支持泛型编程,C++有非常强大的标准模板库STL,C++也可以很好地使用一些面向对象的设计模式来进行开发。
一句话概括就是C++的设计思想是面向对象,在兼容C语言的同时进行了许多规范和补充。但是设计C++不是为了取代C语言,他们有各自的应用领域。C语言主要应用在一些和硬件打交道的场景。C++可以用于应用层开发。