一、作业
1、什么是虚函数?什么是纯虚函数
虚函数:函数前加关键字virtual,就定义为虚函数,虚函数能够被子类中相同函数名的函数重写
纯虚函数:把虚函数的函数体去掉然后加=0;就能定义出一个纯虚函数。
2、基类为什么需要虚析构函数
虚析构函数是为了解决多态导致的子类中空间只能释放父类继承下来部分的空间的问题,虚析构函数可以使空间全部释放,避免产生内存泄漏,所以在使用继承的时候,尽量就要加上虚析构函数
3、如何初始化const和static数据成员
const成员必须在初始化列表中进行初始化
static数据成员在类外进行初始化
4、指针和引用的区别
1、指针定义使用*,引用定义使用&
2、指针可以不初始化(野指针),但是引用必须初始化
3、在函数形参列表中的使用,指针是另一个指针与原指针指向的是一个空间,引用的形参就是外部使用函数输入的参数本身
4、没有空引用,但是有空指针
5、没有多级引用,但是有多级指针
6、指针根据系统占4字节,8字节的空间,引用所占的内存空间和被引用的对象的空间一致
7、引用的使用与目标一致,而指针的使用需要解引用*
8、没有引用数组,但是可以定义指针数组
5、new和malloc的区别
1、定义格式不一样
2、new可以通过定义的数据类型自动计算要分配的空间,而malloc需要自己手动计算空间
3、new是函数调用,需要开辟内存空间,malloc是c语言的关键字,不需要额外开辟内存空间
4、new定义时可以给对象初始化,而malloc不能给对象初始化
5、new不用强转,而malloc定义void*类型使用的时候需要强转成其他类型
6、内存泄漏怎么产生的?如何避免?
内存泄漏是开辟了一块内存空间,使用完之后没有及时释放,就会发生内存泄漏
7、C++的内存分区
堆区,栈区,代码段,数据段,自由存储区
9、常用的数据结构有哪些?时间复杂度和空间复杂度如何使用?
栈,队列,数组,链表,哈希表,图
时间复杂度和空间复杂度要结合使用,在时间不能太长的同时也不能占用太多的内存空间
二、思维导图