类型不同:C语言是面向过程的,而C++是面向对象的。
函数库不同:C语言的标准的函数库很松散,而C++对于大多数的函数都是集成的很紧密。
结构不同:C语言中结构只有成员变量,而在C++中结构中,可以有成员变量和成员函数
C和C++的主要区别是,C++支持许多附加特性。但是,C++中有许多规则与C稍有不同。这些不同使得C程序作为C++程序编译时可能以不同的方式运行或根本不能运行。
C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载
C中的const叫只读变量,只是无法做左值的变量;C++中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号
malloc VS new
malloc(size)申请参数字节大小的内存,如果失败(malloc失败返回0)则进入判断:如果_callnewh(size)也失败的话,抛出bad_alloc异常。_callnewh()这个函数是在查看new handler是否可用,如果可用会释放一部分内存再返回到malloc处继续申请,如果new handler不可用就会抛出异常。
(1):内存不足(开辟失败)时处理方式不同。
malloc失败返回0,new失败抛出bad_alloc异常。
(2):new和malloc开辟内存的位置不同。
malloc开辟在堆区,new开辟在自由存储区域。
(3):new可以调用malloc(),但malloc不能调用new。
new就是用malloc()实现的,new是C++独有malloc当然无法调用