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: (语法糖)
可以取地址了,当取地址,就放回内存中

你可能感兴趣的:(C++)