C++与C比较

C语言是面向过程的,而C++是面向对象的,具有更紧密的函数库和结构支持成员函数。C++引入了函数重载和const常量的概念,以及不同的内存分配方式,如malloc和new。new在内存不足时会抛出异常,而malloc则返回NULL,且new可以使用malloc,反之则不行。
摘要由CSDN通过智能技术生成
  1. 类型不同:C语言是面向过程的,而C++是面向对象的。

  1. 函数库不同:C语言的标准的函数库很松散,而C++对于大多数的函数都是集成的很紧密。

  1. 结构不同:C语言中结构只有成员变量,而在C++中结构中,可以有成员变量和成员函数

  1. C和C++的主要区别是,C++支持许多附加特性。但是,C++中有许多规则与C稍有不同。这些不同使得C程序作为C++程序编译时可能以不同的方式运行或根本不能运行。

  1. C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载

  1. C中的const叫只读变量,只是无法做左值的变量;C++中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号

  1. 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当然无法调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值