1.对于面向对象的理解
面向对象是基于面向过程的,面向过程强调的是功能的实现,面向对象是吧功能封装进对象,强调具备了功能的对象
eg:餐厅吃饭 吃饭<->点餐 做菜 上菜
三大特性:封装,多态,继承
2.指针和引用的区别
- 引用在定义时必须初始化,指针没有要求
- 引用在初始化时引用一个实体后,就不能再进行引用其他实体,而指针可以在任何时候指向任何一个同类型实体
- 没有NULL引用,但有NULL指针
- 在sizeof中含义不同:引用结果为引用类型的大学,但指针始终是地址空间所占字节个数
- 引用自加既引用实体增加1,指针自加即指针向后偏移一个类型的大小
- 有多级指针,但是没有多级引用
- 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
- 引用比指针使用起来相对安全
3.new/delete和malloc/free的区别
- maollc/free是函数,new/delete是操作符
- new申请的空间可以初始化,malloc不行
- malloc的返回值是void*,所以需要计算空间大小并传递且使用时必须更改类型,new不需要
- malloc申请失败返回NULL,new需要捕获异常
- malloc申请的空间一定在堆上,而new不一定,因为operator new可能会存在重载
- new/delete比malloc/free的效率稍微低点,因为new/delete的底层封装了maolloc/free
- malloc/free只能申请内置类型的空间,不能申请自定义类型的空间,因为其不会调用构造与析构函数