建站公司怎么获客,怎样使用网站后台的模板,wordpress 5.0.3,哈尔滨响应式网站建设公司面试题
1.什么是虚函数#xff1f;什么是纯虚函数
在定义函数时前面加virtual。虚函数是为了#xff0c;父子类中只有一个该函数。如果在子类重写虚函数#xff0c;那么用的就是子类重写的虚函数#xff1b;如果子类没有重写虚函数#xff0c;那么调用的是父类继承的虚函…面试题
1.什么是虚函数什么是纯虚函数
在定义函数时前面加virtual。虚函数是为了父子类中只有一个该函数。如果在子类重写虚函数那么用的就是子类重写的虚函数如果子类没有重写虚函数那么调用的是父类继承的虚函数如果这个类定义了虚函数那么在子孙类该函数也是虚函数不需要加vartual。
纯虚函数是在虚函数头后加“ 0”包含纯虚函数的类称为抽象类不能进行实例化。子类需要重写纯虚函数不然也是抽象类
2.基类为什么需要虚析构函数
当基类的指针指向子类在堆区申请的空间时申请空间先构造父类在构造子类。但delete父类指针时只能释放父类指针的作用域不能完全释放子类空间就会导致内存泄露。所以需要再定义析构函数前加virtual设置成虚析构函数。该类的子孙类也会是虚析构函数。
3.如何初始化const和static数据成员。
使用const必须对变量进行初始化构造函数使用初始化列表来完成初始化
static成员变量一般在类内声明类外定义没有给定初始值默认为0。
4.指针和引用的区别
1.指针使用*进行定义引用使用进行定义
2.引用没有多级引用指针有多级指针
3.定义引用的时候必须初始化定义指针的时候可以不初始化
4.没有空引用有空指针
5.引用不能更改目标指针在后面可以更改指向
6.引用没有引用数组指针有指针数组
7.引用就是目标本身指针是存储目标的首地址
8.引用不占用内存空间使用目标的内存空间指针需要占用内存空间
9.使用引用是直接就可以使用使用指针需要*运算符
10.引用偏移是目标本身的偏移指针的偏移是目标内存空间的偏移
5.new和malloc的区别
1.malloc的函数调用需要开辟内存空间new的关键字不需要开辟函数内存空间
2.malloc申请空间没有单个和连续的区分new申请有单个和连续空间的区分
3.malloc申请空间要手动计算空间大小new的系统自动计算大小
4.malloc申请空间以字节为单位new申请空间以数据类型为单位
5.malloc申请的空间是void *类型需要是要进行强转new申请的什么类型返回的就是什么类型的指针
6.malloc申请空间不能初始化new申请空间可以进行初始化
7.new申请空间自动调用该类的构造函数malloc不会
6.内存泄露怎么产生的怎么避免
当父类指针指向子类申请的空间在delete父类指针时只能释放父类指针作用域的空间不能释放剩余的子类空间就会导致内存泄露。所以需要在父类的析构函数前加virtual设置成虚析构函数。
7.C的内存分区
分为堆区动态分配内存区域由new和delete操作。栈区已经初始化的局部变量静态区未初始化的局部变量和全局变量
8.常用的数据结构有哪些时间复杂度和空间复杂度如何使用
常用的有数组时间复杂度访问O1插入/删除O(n)空间复杂度O(n)
链表时间复杂度访问On插入/删除O(1)位置已经知道空间复杂度O(n)
栈时间复杂度入栈/出栈O1空间复杂度O(n)
队列时间复杂度入队/出队O1空间复杂度O(n)
类
思维导图