C++和C部分区别

C和C++的区别:
1、C89标准中的C语言不支持函数的默认值, C++支持函数默认值,且需要遵循从右向左赋初始值
2、内联函数
3、C语言中不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载
4、C中const叫只读变量, 只是无法做左值的变量,比如数组的下标,C++中const是真实的常量,可以当数组的下标,但是也可能退化成c语言的常量,默认生成local符号。
5、引用,引用的底层就是指针,使用时直接借引用,可以配合const对一个立即数进行引用。
6、malloc,free new delete
1、malloc和free是函数,但是new和delete是运算符
2、malloc在分配内存前需要大小,new不需要;malloc是根据字节数分配,但是new是根据类型分配,并且可以赋初值, int *p3 = new int (10);
3、malloc不安全,需要手动类型转化,new不需要;
4、free只释放空间,delete会先调用析构函数再释放空间;new先调用构造函数在申请空间;
5、内存不足开辟失败的返回值不同:malloc失败返回0,new开辟失败抛出bad_alloc异常
6、malloc开辟在堆区,new开辟在自由存储区
7、c可以省略函数原型,但是c++不可以;

C语言的优点:出色的移植性, 访问硬件, 运行效率高
缺点:拓展性差,复用性差,维护性差

C++:
封装 - 维护性(bug定位)
继承 - 复用性(拿来即用)
多态 - 提高拓展性、灵活性 (添加功能)

C语言 – register:
请求CPU将该变量存放在寄存器中,并不是一定放,放是否空闲寄存器
只能修饰局部变量,且不能取地址,同时放入寄存器是不变的值
还得看CPU的硬件是否支持该变量的类型

C++ : register: (语法糖)
可以取地址了,当取地址,就放回内存中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值