网站大量收购独家精品文档,联系QQ:2885784924

2025年C++常见面试题30道 .pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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),对应⽤的操作与对变量直接操作效果完全相同。申明⼀个引⽤的时候,切记要对其进⾏初始

化。引⽤声明完毕后,相当于⽬标变量名有两个名称,即

文档评论(0)

130****4546 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档