C/C++容易混淆的小知识点

1、函数传指针和传引用的区别?
1>指针定义时可以不初始化,但引用不行;
2>引用只能和一个实体结合,而指针可和多个实体结合;
3>自加减意义不同。指针的++表示指针向后偏移类型个字节,而引用则是+1,–类似;
4>sizeof求值的意义不同。Sizeof(指针)是指针所占的字节数,32位平台下为4,64位平台下为8(数组名除外),sizeof(引用)是指引用所指实体类型的大小;
5>没有空引用,但是有空指针;
6>有多级指针,但没有多级引用;
7>引用比指针用起来更安全,不用判空。
注意:指针也可以进行引用

2、C++中的封装:
隐藏对象的属性和实现细节,仅仅对外提供公开接口和对象进行交互,将数据和操作数据的方法进行有机结合。

3、必须在构造函数的成员初始化列表中进行初始化的数据成员:
引用数据成员、const数据成员、类类型成员(该类没有缺省的构造函数)。

4、面向对象与面向过程的区别?
面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来。
面向对象程序设计方法是将数据和对象的操作封装在一起,作为一个整体来处理。
面向过程程序设计以过程为中心,难于维护。
面向对象程序设计以数据为中心,数据相对功能而言,有较强的稳定性,因此更易于维护。

5、static关键字
static可修饰局部变量、全局变量和函数。
在修饰全局的变量和函数时:在文件作用域中使用可改变链接属性,仅在当前文件中可以使用。
修饰局部变量时:
1.在静态区开辟;
2.生命周期为整个函数的运行时间;
3.默认初始化为0;
4.变量具有记忆作用,即每次保存上一次调用后的值;
5.在函数第一次调用时创建,构造函数只调用一次。
修饰类的成员变量和函数:
静态成员为所有对象所共享,不属于某个实例
类静态成员即可用类名::静态成员或者对象(.静态成员函数)来访问
类静态成员变量必须在类内声明类外定义,定义时不添加static关键字
类的静态成员函数没有默认的this指针,因此在它里面不能使用任何非静态成员
静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值,const修饰符等参数。

6、malloc、free和new、delete的区别:
malloc、free为函数,new、delete为操作符;
malloc的参数为要申请的字节数,new直接跟类型;
malloc的返回值为void*,并且返回时需要判空,new不需要判空,申请空间失败时会直接抛异常;
new申请单个类型的空间时可对其进行初始化,同时还可以数组空间;
malloc、free调用时不会调用构造函数和析构函数,但new、delete会;
new的底层会调用malloc,delete的底层会调用free。
1.operator new/operator delete、 operator new[]/operator delete[] 和 malloc/free用法一样。
2. 他们只负责分配空间/释放空间,不会调用对象构造函数/析构函数来初始化/清理对象。
3. 实际operator new和operator delete只是malloc和free的一层封装

7、定位new表达式
是在已分配的原始

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值