- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
为天地立心,为生民立命,为往圣继绝学,为万世开太平。——张载
C++常见⾯试题30道
1.new、delete、malloc、free关系
delete会调⽤对象的析构函数,和new对应free只会释放内存,new调⽤构造函数。malloc与free是C++/C语⾔的标准库函数,new/delete是
C++的运算符。它们都可⽤于申请动态内存和释放内存。对于⾮内部数据类型的对象⽽⾔,光⽤maloc/free⽆法满⾜动态对象的要求。对象
在创建的同时要⾃动执⾏构造函数,对象在消亡之前要⾃动执⾏析构函数。由于malloc/free是库函数⽽不是运算符,不在编译器控制权限之
内,不能够把执⾏构造函数和析构函数的任务强加于malloc/free。因此C++语⾔需要⼀个能完成动态内存分配和初始化⼯作的运算符new,
以及⼀个能完成清理与释放内存⼯作的运算符delete。注意new/delete不是库函数。
2.delete与delete[]区别
delete只会调⽤⼀次析构函数,⽽delete[]会调⽤每⼀个成员的析构函数。在MoreEffectiveC++中有更为详细的解释:当“delete操作符⽤于
数组时,它为每个数组元素调⽤析构函数,然后调⽤operatordelete来释放内存。”delete与new配套,delete[]与new[]配套
MemTest*mTest1=newMemTest[10];
MemTest*mTest2=newMemTest;
Int*pInt1=newint[10];
Int*pInt2=newint;
delete[]pInt1;//-1-
delete[]pInt2;//-2-
delete[]mTest1;//-3-
delete[]mTest2;//-4-
在-4-处报错。
这就说明:对于内建简单数据类型,delete和delete[]功能是相同的。对于⾃定义的复杂数据类型,delete和delete[]不能互⽤。delete[]删除⼀
个数组,delete删除⼀个指针。简单来说,⽤new分配的内存⽤delete删除;⽤new[]分配的内存⽤delete[]删除。delete[]会调⽤数组元素的析
构函数。内部数据类型没有析构函数,所以问题不⼤。如果你在⽤delete时没⽤括号,delete就会认为指向的是单个对象,否则,它就会认
为指向的是⼀个数组。
3.C++有哪些性质(⾯向对象特点)
封装,继承和多态。
4.⼦类析构时要调⽤⽗类的析构函数吗?
析构函数调⽤的次序是先派⽣类的析构后基类的析构,也就是说在基类的的析构调⽤的时候,派⽣类的信息已经全部销毁了。定义⼀个对象时
先调⽤基类的构造函数、然后调⽤派⽣类的构造函数;析构的时候恰好相反:先调⽤派⽣类的析构函数、然后调⽤基类的析构函数。
5.多态,虚函数,纯虚函数
多态:是对于不同对象接收相同消息时产⽣不同的动作。C++的多态性具体体现在运⾏和编译两个⽅⾯:在程序运⾏时的多态性通过继承和
虚函数来体现;
在程序编译时多态性体现在函数和运算符的重载上;
虚函数:在基类中冠以关键字virtual的成员函数。它提供了⼀种接⼝界⾯。允许在派⽣类中对基类的虚函数重新定义。
纯虚函数的作⽤:在基类中为其派⽣类保留⼀个函数的名字,以便派⽣类根据需要对它进⾏定义。作为接⼝⽽存在纯虚函数不具备函数的功
能,⼀般不能直接被调⽤。
从基类继承来的纯虚函数,在派⽣类中仍是虚函数。如果⼀个类中⾄少有⼀个纯虚函数,那么这个类被称为抽象类(abstractclass)。
抽象类中不仅包括纯虚函数,也可包括虚函数。抽象类必须⽤作派⽣其他类的基类,⽽不能⽤于直接创建对象实例。但仍可使⽤指向抽象类
的指针⽀持运⾏时多态性。
以铜为镜,可以正衣冠;以古为镜,可以知兴替;以人为镜,可以明得失。——《旧唐书·魏征列传》
6.求下⾯函数的返回值(微软)
intfunc(x)
{
intcountx=0;
while(x)
{
countx++;
x=x(x-1);
}
returncountx;
}
假定x=9999。答案:8
思路:将x转化为2进制,看含有的1的个数。
7.什么是“引⽤”?申明和使⽤“引⽤”要注意哪些问题?
答:引⽤就是某个⽬标变量的别名“”(alias),对应⽤的操作与对变量直接操作效果完全相同。申明⼀个引⽤的时候,切记要对其进⾏初始
化。引⽤声明完毕后,相当于⽬标变量名有两个名称,即
您可能关注的文档
最近下载
- 2021年上海高考地理真题答案.docx VIP
- 梁在坡道上的布置完整版.ppt
- 2025年南京铁道职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 嘉那嘛呢石经城规划设计.ppt
- 海马-海马S5 Young-产品使用说明书-海马S5 Young舒适型-HMA7160GA4W-S5Young使用说明书.pdf
- 贵州省2025年中考物理模拟测试卷附参考答案.pptx VIP
- 贵州省贵阳市2025年中考物理二模试卷附参考答案.pptx VIP
- 斯大林《论辩证唯物主义和历史唯物主义》.pdf
- 第三单元第1课《创意小手表》课件 人美版(2024) 一年级下册美术.pptx VIP
- 汉服介绍精品课件.ppt VIP
文档评论(0)