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

2025年C++及数据结构笔试面试常见知识点总结 .pdfVIP

2025年C++及数据结构笔试面试常见知识点总结 .pdf

  1. 1、本文档共6页,可阅读全部内容。
  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++及数据结构笔试⾯试常见知识点总结

⼀些常考的基础知识点个⼈总结,⼤神勿喷,欢迎指正。

1.⼴义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表。

2.构造函数不能声明为虚函数。

构造函数为什么不能是虚函数?

1.从存储空间⾓度,虚函数对应⼀个指向vtable虚函数表的指针,这⼤家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间

的。问题出来了,如果构造函数是虚的,就需要通过vtable来调⽤,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所

以构造函数不能是虚函数。

2.从使⽤⾓度,虚函数主要⽤于在信息不全的情况下,能使重载的函数得到对应的调⽤。构造函数本⾝就是要初始化实例,那使⽤虚函数也

没有实际意义呀。所以构造函数没有必要是虚函数。虚函数的作⽤在于通过⽗类的指针或者引⽤来调⽤它的时候能够变成调⽤⼦类的那个成

员函数。⽽构造函数是在创建对象时⾃动调⽤的,不可能通过⽗类的指针或者引⽤去调⽤,因此也就规定构造函数不能是虚函数。

3.构造函数不需要是虚函数,也不允许是虚函数,因为创建⼀个对象时我们总是要明确指定对象的类型,尽管我们可能通过基类的指针或引

⽤去访问它但析构却不⼀定,我们往往通过基类的指针来销毁对象。这时候如果析构函数不是虚函数,就不能正确识别对象类型从⽽不能正

确调⽤析构函数。

4.从实现上看,vbtl在构造函数调⽤后才建⽴,因⽽构造函数不可能成为虚函数从实际含义上看,在调⽤构造函数时还不能确定对象的真实

类型(因为⼦类会调⽗类的构造函数);⽽且构造函数的作⽤是提供初始化,在对象⽣命期只执⾏⼀次,不是对象的动态⾏为,也没有必要

成为虚函数。

5.当⼀个构造函数被调⽤时,它做的⾸要的事情之⼀是初始化它的VPTR。因此,它只能知道它是当前“”类的,⽽完全忽视这个对象后⾯是

否还有继承者。当编译器为这个构造函数产⽣代码时,它是为这个类的构造函数产⽣代码——既不是为基类,也不是为它的派⽣类(因为类

不知道谁继承它)。所以它使⽤的VPTR必须是对于这个类的VTABLE。⽽且,只要它是最后的构造函数调⽤,那么在这个对象的⽣命期

内,VPTR将保持被初始化为指向这个VTABLE,但如果接着还有⼀个更晚派⽣的构造函数被调⽤,这个构造函数⼜将设置VPTR指向它的

VTABLE,等.直到最后的构造函数结束。VPTR的状态是由被最后调⽤的构造函数确定的。这就是为什么构造函数调⽤是从基类到更加派⽣

类顺序的另⼀个理由。但是,当这⼀系列构造函数调⽤正发⽣时,每个构造函数都已经设置VPTR指向它⾃⼰的VTABLE。如果函数调⽤使

⽤虚机制,它将只产⽣通过它⾃⼰的VTABLE的调⽤,⽽不是最后的VTABLE(所有构造函数被调⽤后才会有最后的VTABLE)。

3.⼆叉树的相关概念:

深度:树的层数;

度:(对节点来说是)⼀个节点的孩⼦数;(对整棵树来说是)其节点的度的最⼤值。

完全⼆叉树:将满⼆叉树从右向左删除节点所得的⼆叉树为完全⼆叉树。

如果⼀棵树有n个叶⼦节点,那么度为2的节点就有n-1个。如果我们知道⼀棵完全⼆叉树有n个叶⼦节点,那么它的节点数最多2n个。

任何⼆叉树中度为0的结点⽐度为2的结点多⼀个。

4.堆的插⼊元素是在最后插⼊,然后进⾏调整堆;删除元素是把最后的元素放到删除元素的地⽅,然后进⾏调整堆。

5.由先序遍历和中序遍历可以唯⼀确定⼆叉树,确定⽅法是:由先序序列确定根节点;按根节点把中序序列分为两端,前⾯的是左⼦树,后

⾯的是右⼦树;对左右⼦树重复前⾯的步骤还原树形结构。

6.printf是从右向左压⼊栈,先运⾏右侧项,再运⾏左侧项。例如printf(“%d,%d”,a,++a);输出的结果应该是两个相等的值(都是a+1以后的

值)。

7.在写判断语句时最好将⼀个右值放在==左侧,⽽把左值放在右侧,因为这样可以检查出误写成赋值运算符的情况。

8.所有的ASCII码都可以⽤“加\”数字(⼀般是8进制数字)来表⽰。因此看到\后跟三位数字的时候要明⽩这是⼀个字符。

9.在⼆叉树结点的前序序列、中序序列和后序序列中,所有叶结点的先后顺序完全相同。

10.⼀种类型a⾄少提供另外⼀种类型t的⾏为,那么a类型就是b类型的⼦类型。公有继承的派⽣类就是基类的⼦类型。类a是类b的⼦类型,意味

着类a适应类b,即:类a对象可以使⽤的场合同样适合类b的对象。

11.拓扑排序常⽤来确定⼀个依赖关系集中,事物发⽣的顺序。拓扑排序得出的线性

文档评论(0)

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

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

1亿VIP精品文档

相关文档