c++9月26日

1.什么是虚函数,什么是纯虚函数
>虚函数:在父类的成员函数前加virtual关键字,在子类中重写该函数,这个函数就是虚函数
注意:如果子类没有对这个虚函数重写,在调用时会调用父类的函数实现
>纯虚函数:在父类成员函数前加virtual关键字(该函数不需要实现具体功能),在函数声明后加=0
注意:这会使父类变为抽象类,不能实例化对象,需要在子类中重写这个纯虚函数才能进行实例化对象

2.基类为什么需要虚析构函数
父类指针和引用的作用域只能在自身的范围内,不能直接调用子类的析构函数,会导致内存泄漏,为了确保在使用父类指针或引用delete子类对象时,能够正确调用子类的析构函数

3.如何初始化const和static数据成员
const数据成员必须在构造函数的初始化列表中进行初始化,因为在对象创建后,对象的成员就不能改变了
static数据成员可以脱离类对象存在,需要在类外定义和初始化,在类内声明

4.指针和引用的区别
>虽然指针和引用都可以访问变量,但两者有很大的区别
>指针是一个变量,存储另一个变量的地址,引用是另一个变量的别名,它和另一个变量共用一个空间
>指针在声明时可以不初始化,可以指向其它地址,引用在定义时必须初始化,初始化后不能更改指向
>指针可以进行算数运算,可以进行偏移,引用不能算数运算,它只能指向一开始的变量
>指针的大小是系统决定的一般为8字节,引用的大小和它的目标一致
>有多级指针,无多级引用
>指针需要解引用,引用可以直接使用
>有指针数组,无引用数组
5.new和malloc的区别
>malloc是标准库提供的函数,属于函数调用,new是c++的关键字
>malloc申请空间没有单个和连续的区分,new有
>malloc申请空间需要手动计算,new会根据数据类型自动计算
>malloc申请空间类型为void*类型使用时需要强转,new不需要
>malloc申请类对象空间时不会调用该类对象的构造函数,new会调用

6.内存泄漏怎么产生的,如何避免
内存泄漏:动态内存分配后未能释放该内存,导致无法访问这些内存
原因:
>未使用free或delete释放动态分配的内存
>指针丢失:指针被重新赋值或越界访问无法访问原来的内存
如何避免:确保每次使用malloc和new后,在合适的时机调用free和delete

7.c++的内存分区
代码区:存放可执行代码
数据区:存放全局变量和静态变量
堆区:用于动态内存分布
栈区:存储局部变量和函数调用信息

8.常见的数据结构都有那些,时间复杂度和空间复杂度如何使用
线性表:顺序表,链表,栈,队列

思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值