c++的补充

1.什么是虚函数,什么是纯虚函数

在类中定义函数时,在函数名前加virtual就是虚函数;虚函数能够保证,子父=类中只有一个该函数;当子函数中没有重写时,那么父子类中使用该函数都是父类中的该函数;当子类中重写时,那么父子 类中调用的就是子类重写的函数;如果当前类的函数设置成虚函数,那么该类的子类中该函数都是虚函数,即使没有加virtual;

类中的某些成员函数没有实现的意义,仅仅只是该类中应该拥有的功能但是想要在子类来重写后,使用父类指针或引用指向子类对象时来调用该重写的虚函数纯虚函数定义格式: 虚函数头 = 0;

 包含纯虚函数的类,称为抽象类,抽象类是不能实例化对象的,如果在子类的中没有重写纯虚函数那么子类及其子类都是抽象类

2.基类为什么需要虚析构函数

如果基类的析构函数不是虚函数,当你通过基类指针删除派生类对象时,只会调用基类的析构函数,而不会调用派生类的析构函数。这可能导致派生类中分配的资源(如动态内存、文件句柄等)没有被正确释放,从而造成资源泄漏 。使用虚析构函数可以确保在删除对象时,析构函数的调用顺序是从派生类到基类。

3.如何初始化const和static修饰的数据成员

const 数据成员必须在构造函数的初始化列表中初始化,不能在构造函数体内赋值。static 数据成员在类内部声明,在类外部定义和初始化

4.指针和引用的区别

引用的符号是&,指针的符号是;  引用一旦使用就无法修改,而指针可以修改。;定义引用时必须初始化,而指针可以不初始化; 引用不可以是空引用,而指针可以是空指针;引用就是目标本身,而指针只是记录目标地址;引用不占用内存空间,而指针占用空间。

5.new和malloc的区别

new申请对象空间时,会自动调用该对象所在类中的构造函数,而malloc不会; malloc申请出的空间结果是void*类型,使用时需要根据具体的情况进行强转,而new申请空间时,申请什么类型的空间返回的就是什么类型的指针; new申请空间时可以给空间进行初始化,而malloc不可以;  malloc\free申请空间时,没有单个和连续空间的区别,而new\delete申请时区分单个和连续空间的操作

6.内存泄露是什么导致,怎么避免

内存泄漏是由于动态分配的内存未被正确释放而导致的资源浪费,没有及时使用delete释放。

在并不需要使用该内存时,及时用delete释放内存;

7.c++的内存分区

堆区,栈区 数据区、代码区和常量区

9.常用的数据结构,如何使用空间复杂度和时间复杂度

数组,链表,栈,队列,哈希表,二叉树

时间复杂度衡量算法执行所需时间,反映算法的效率。空间复杂度衡量算法执行所需内存,反映算法的资源消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值