C++学习9.26

1、

1、什么是虚函数?什么是纯虚函数?

虚函数就是在基类中声明为 virtual的成员函数,允许在派生类中重写。
纯虚函数就是一个没有函数体额虚函数,在类声明中使用=0来特指它是纯虚函数

2、基类为甚么要虚析构函数?

虚析构函数:是用来解决当父类指针指向子类在堆区空间的对象时,
会先构造父类再把整个子类空间构造出来,
但是当要释放父类指针时只能释放父类空间的内容,
子类剩余的空间没办法释放所产生的内存泄漏问题。

3、如何初始化const和static数据成员

const修饰的成员变量必须在构造函数的初始化列表进行初始化工作,
因为他们在对象创建后就不能够被修改了。
static修饰的成员属于类而不是属于特定对象。
他们可以在类中声明,但是需要在类外进行初始化。

4、指针和引用的区别

指针和引用都是间接访问对象的一种方式
1、指针式用*来声明的,而引用时用&来声明的
2、指针声明时可以不进行初始化,而引用声明时必须初始化
3、指针的指向可以更改,而引用定义指向后就不能进行更改
4、指针储存的时变量的地址,而引用自身就是该变量
5、指针需要定义时需要额外的分配空间,引用不需要分配空间
6、没有多级引用,但是有多级指针
7、指针的偏移指的是空间大小的改变,引用的偏移就是对目标进行的改变
8、指针的储存空间大小统一都是8字节,引用的储存大小和目标一致

5、new和malloc的区别

1、malloc申请空间时调用函数来进行的,new只是关键字
2、malloc申请空间时候没办法进行初始化,new申请时可以初始化
3、malloc申请空间返回值时void类型,new申请返回值是按照申请空间时的类型
4、malloc申请空间不分单个和连续,new申请时则分单个和连续
5、malloc申请空间时按照字节大小为单位,new申请时是按照数据类型为单位
6、malloc申请空间是需要手动计算申请大小,new申请时是自动进行计算大小

6、内存泄漏是如何产生的?如何避免?

如何产生:
1、使用new或者malloc申请空间时,没有调用delete或free进行释放
2、父类指针调用子类函数时,结束后直接进行析构
解决:
1、每次申请空间后,结束时候要使用delete或free进行空间释放
2、在父类的析构函数采用虚析构函数

7、C++的内存分区

栈、怼、静态区、代码区、数据区

8、常用的数据结构有那些?时间复杂度和空间复杂度如何使用?

数组、链表、栈、队列、哈希表、二叉树、图
1、数组
时间复杂度:
       访问:O(1)
       插入:O(n)
空间复杂度:
             O(n)
2、链表
时间复杂度:
       访问:O(n)
       插入:O(1)
空间复杂度:
             O(n)
3、栈
时间复杂度:
       访问:O(n)
       push/pop:O(1)
空间复杂度:
             O(n)
4、队列
时间复杂度:
       访问:O(n)
       enqueue:O(1)
空间复杂度:
             O(n)
5、哈希表
时间复杂度:
       访问:O(1)(平均)
空间复杂度:
             O(n)
6、二叉树
时间复杂度
       查找/插入/删除:O(n)(不平衡)
       查找/插入/删除:O(log1)(平衡)
空间复杂度:
             O(n)

2、思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值