--练习--

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

在类中定义函数前加上virtual,那么该函数就是虚函数;

其确保父子类中只有一个该函数;

其子类中如果未进行重写操作,则直接调用父类中的虚函数;

进行重写后则都调用虚列表中重写后的虚函数;

进行虚函数设置后,其后面的所有子类中的该函数都是虚函数。

纯虚函数是在基类中声明的虚函数,其在函数结尾加上  =0  ;声明之后所有子类中的该函数都为纯虚函数。

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

子类中调用虚函数后也要进行析构,基类中不虚析构函数,子类中的虚函数无法被析构。

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

static:
定义变量的时候在其类型前加上static;

通常在类外部初始化;

const:

在定义变量时在其类型前,变量前加const;

也可以在类内进行函数声明时初始化;

指针和引用的区别

指针大小固定,引用的大小因引用对象的不同而不同;

指针的指向可以改变,引用对象之后就无法更改;

可以有多级指针,没有多级引用;

定义指针可以不初始化,定义引用必须初始化;

没有空引用,有空指针;

没有引用数组,但是有指针数组;

引用不占内存空间,指针占内存空间;

引用就是被引用的数据本身,指针则是其地址;

指针偏移是对其进行单位内存空间大小的偏移,引用直接对本身进行偏移。

new和malloc的区别

new在申请内存空间时会调用构造函数;

malloc会是调用系统中的函数,占用内存空间,new是关键字,无需开辟内存空间;

new会对申请的空间进行初始化,malloc不会;

malloc得手动给输入申请的空间大小,new会自动计算;

new申请空间时是以数据类型为单位的,malloc则是以字节为单位的;

malloc无连续申请和单个申请的区别,new分连续申请和单个申请;

malloc申请的空间类型是void *的,需要根据需求强转,new则是申请时什么类型 返回值就是什么类型。

内存泄漏怎么产生,如何避免

动态内存分配的内存未释放;

循环引用;

异常处理不当;

指针管理不当;

文件未关闭;

避免:

设置智能指针;

成对使用new/delete和malloc/free;

避免循环使用;

正确处理异常。

C++的内存分区

代码区;数据区(全局/静态储存区,常量储存区);堆;栈;命令行参数与环境变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值