首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
负能量迪不要
门头沟学院 C++
发布于陕西
关注
已关注
取消关注
@Dreams0000:
🍐05-C++面试之多态底层实现:虚表和虚表指针
0 前述针对于自己在秋招的面试中,对于CPP部分遇到的问题,其中大部分是以此为起点,你可以基于这些点,将自己对于CPP学习的知识点,串联起来。无论面试官,问这一类问题中的某个点,你都应该可以将这一个珠子串联到自己的知识链上来讲。这是一种拓展知识的能力。在此专栏下面个人校招记录:回馈牛客,对CPP做一个小小的总结。本部分关于CPP多态的底层实现的总结,从虚表和虚表指针的底层原理和调用流程,以及关于多态的经典案例来展开。下面对应的是之前发布的个人校招其他公司面试总结,希望可以更好的帮到你✍✍总结:以代码的方式回看自己23届校招 | 或恐慌、疑惑、好在坚持!🌋大疆DJI 嵌入式 ✨MINIEYE自动驾驶 软开 深圳 实习 🌟百度 嵌入式软开 上海 2022.07🌳深圳杰理科技嵌入式 2022.07.26🌵深圳 诺瓦星云提前批 嵌入式 2022.08.06🌴哲库科技 提前批 2022.08.07🌲经纬恒润 自动驾驶嵌入式 1,2面 2022.08.15😥丰疆智能 嵌入式软开 1,2,3面+4面 2022.08.09🤷♂️一次让我略感疲惫的英文面试--吉利极氪 嵌入式软开🙆♂️♂️【深信服校招】笔试+面试 软件开发工程师🌾ZTE中兴软件工程师 一面+二面 2022.08.29🌱紫光同芯 嵌入式软开 芯片 2022.09.19🌄美团校招面经 嵌入式 1,2面 2022. 09🎋360 软开 一面+二面+ 2022.09这里是CPP一些面试问题整理🥭01-C++面试之C++11新特性总结🍏02-C++面试之static关键字🍑03-C++面试之四种强制类型转换🍋04-C++面试之析构函数和构造函数🍐05-C++面试之多态底层实现:虚表和虚表指针🍎06-C++面试之STL内存管理篇🍅07-C++面试之从代码到可执行程序经历……未完待续1 多态的作用大致总结:在基类的函数前加virtual关键字,可以在派生类中可以重写该函数。通过运行时动态绑定,根据所指对象的实际类型来调用相应的函数。1)如果对象类型是派生类,就调用派生类成员函数;2)如果对象类型是基类,就调用基类的成员函数。2 多态性底层基础底层原理1)虚表vtable:virtual function table:当类中含有virtual关键字修饰的方法时,编译器会自动为该类生成虚表;2)虚表指针vptr:在含有虚函数的类实例化对象时,对象地址的前四个字节存储着指向虚表的指针。调用流程1)编译器在发现基类中有虚函数时,会自动为每一个含有虚函数的类生成一份虚表,该表是一个一维数组,表里的元素是虚函数的入口地址。2)同时,编译器会在每个对象的前四个字节保存一个虚表指针vptr,其指向所属类的虚表。在构造时,根据对象的类型去初始化虚表指针vptr,让vptr指向正确的虚表,使得在调用虚函数时,能找到正确的函数。3)**【关键】**所谓的合适时机,在派生类实例化对象时,程序会自动调用构造函数,在构造函数中创建虚表,并对虚表初始化。在构造派生类的对象时,会先调用基类的构造函数,此时编译器只“看到了”基类,并且为基类对象初始化虚表指针,令它指向基类的虚表;当调用派生类的构造函数时,接着为派生类对象初始化虚表指针,令它指向派生类的虚表。4)当派生类对基类的虚函数没有覆盖(override),派生类的虚表指针直接指向基类的虚表;当派生类对基类的虚函数**有覆盖(override)**时,派生类的虚表指针指向自己的虚表;当派生类中有自己的虚函数时,将该虚函数地址添加在自己的虚表里面。5)以上步骤总结:这样指向派生类的基类指针在运行时,就可以根据派生类对虚函数重写请况,进行动态调用,从而实现多态性。C++多态经典案例应用1)游戏程序实例:游戏中的人物,道具,建筑物,每个对象都由自己的属性和方法,不同对象也可能有共同的属性和方法。从而,这部分共同的部分,可以设计为base类,其他的可以在此基类上进行派生出来。2)感觉微软的PPT好像也是这种模式,比如一个基类是基本的几何体性质,可以派生出一个矩形,还可以是正方形,在一个基类上进行override操作即可。3 基类的虚表放在内存什么位置?首先,根据虚表的特征来进行推断:1)虚函数表是类中全局共享元素,即全局仅有一个,在编译时就构造完成。2)虚函数表是一个一位数组,里面的元素是指针指向类里面的虚函数,而类中虚函数的在编译时间就可以确定,即虚函数的大小是确定的,不需要动态内存分配,所以不在堆上;类对象中的前四个字节存在一个虚表指针,即vptr指向虚表。这里可以推出虚函数表不是函数,也即不是程序代码,不可能存储在text代码段。3)虚函数表类似类中的静态成员变量,静态成员变量也是全局共享、大小确定,最优可能在全局数据区,在Linux/Unix下存放在可执行文件的只读数据段中(rodata),windows下在常量数据段。4)虚表指针Vptr,对于有虚函数或者继承与拥有虚函数的类,对该类进行实例化时,在构造函数执行时会对虚表指针进行初始化,并且存在对象内存分布的最前面。5)内存一般5区:栈区、自由区(不算)、堆区、全局数据区、常量区、代码段。参考C语言 08问题:内存五区 什么变量分别存储在什么区域,堆上还是栈上。
点赞 4
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
02-15 10:29
浙江大学 算法工程师
华为OD前端面经
个人背景与求职契机我是一名双非一本出身、拥有 6 年前端开发经验的从业者。此前因前公司组织架构调整,所在项目组被优化,我经历了半年多的职业空窗期。空窗期间我一度备考公务员,但感觉上岸难度较大;恰好我一直对华为 OD 平台很感兴趣,从德科的HR处了解到 OD 更新了院校清单,而我的母校正列于其中,于是决定抓住这个机会尝试投递。机考经历我提前两周多开始备考机考,整体来看考题有一定难度,但达到及格线还是比较轻松的。机考共三道题:第一题是数组与字符串相关的经典题型,第二题考察队列的应用,最后一题则是贪心算法类题目。和我平时刷的 LeetCode 题目相比,机考题目更偏向场景化,准确理解题意成了答题的关...
查看11道真题和解析
点赞
评论
收藏
分享
02-20 17:18
已编辑
黑龙江大学 Java
agent实习都干什么?什么是ReAct和Planning & Extractor?
在构建AI Agent(智能体)时,如何引导大模型有效完成复杂任务是一个核心问题。当前主流范式主要有两种:ReAct(推理+行动) 和 Planning & Extractor(规划+提取器)。它们都旨在增强模型的自主性和任务执行能力,但在工作流程和适用场景上存在显著差异。本文将通过实例对比两者的异同,帮助企业根据实际需求选择合适范式。一、ReAct范式ReAct由Shunyu Yao等人提出,其核心思想是让模型在生成过程中交替进行“推理”和“行动”。模型会先思考当前状态(Reasoning),然后决定采取什么行动(Acting),如调用工具、查询知识库,之后根据行动结果再次推理,直至...
AI求职实录
点赞
评论
收藏
分享
02-04 17:01
南昌大学 Java
1000沟通了
为什么第一段实习都找不到😂,211本,项目一个点评一个微服务商城,
牛客96763241...:
拿插件直接投就完了,这玩意看运气的
点赞
评论
收藏
分享
02-05 22:54
中北大学 前端工程师
求大佬指点 前端面试居然被说一眼培训班
双非25届本科软件工程 一段实习 目前离职等春招 求大佬们看看简历哪里能改改
点赞
评论
收藏
分享
02-18 18:08
电子科技大学 后端工程师
暑期实习,要来了!!
大家好,我是阿术。27届暑期实习马上就要开始了,大三/研二的同学可以准备起来了。现在找实习越来越卷了,好多得先有实习经历才给你面试,死锁了。我记得我当初找实习那会,焦虑的不行,因为实验室搞的东西和笔试面试中需要的完全不一样,算法、八股,什么的要学,手忙脚乱的。但好在结果是好的,从二月到五月,三个月的拷打换来了蚂蚁和阿里云的暑期实习offer。根据我以及很多同学的经验,发现大家在找暑期实习的都会有一些困惑,比如,暑期实习时间线—投递什么时候开启,什么时候结束,什么时候去实习准备到什么程度可以投递投递渠道有哪些暑期实习时间线暑期实习一般是从二月底开始,三四月份的时候大部分公司都已经开启了,一般可以...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
嵌入式应届生春招怎么准备——从零到拿 Offer 的系统攻略
772
2
...
关于租房
434
3
...
27届实习近一年的年度经历和总结
381
4
...
HTTP 和 HTTPS 区别
367
5
...
agent实习都干什么?prompt设计
257
6
...
美团推荐算法一面
203
7
...
得力嵌入式工程师 二面 面经
195
8
...
这个简历可以去找暑期实习了吗
190
9
...
大三无实习
188
10
...
27前端双非找实习
171
创作者周榜
更多
正在热议
更多
#
牛客新年AI问运
#
13904次浏览
168人参与
#
你最讨厌面试被问什么
#
1226次浏览
26人参与
#
牛客AI体验站
#
17863次浏览
302人参与
#
有转正机会的小厂实习值得去吗?
#
540次浏览
18人参与
#
牛友们,签完三方你在忙什么?
#
137367次浏览
993人参与
#
担心入职之后被发现很菜怎么办
#
282489次浏览
1185人参与
#
如何缓解入职前的焦虑
#
258851次浏览
1451人参与
#
校招第一份工作你干了多久?
#
139385次浏览
609人参与
#
去年的flag与今年的小目标
#
34278次浏览
337人参与
#
牛客租房专区
#
151400次浏览
1479人参与
#
秋招开始捡漏了吗
#
229457次浏览
1044人参与
#
九月了,是考研还是就业?
#
89242次浏览
556人参与
#
秋招投递攻略
#
268788次浏览
2553人参与
#
这份实习,有没有动摇过你的职业方向?
#
2170次浏览
39人参与
#
搜狐工作体验
#
4116次浏览
29人参与
#
机械人求职现状
#
33640次浏览
297人参与
#
我是XXX,请攻击我最薄弱的地方
#
61780次浏览
409人参与
#
用友工作体验
#
18083次浏览
151人参与
#
你的工资什么时候发?
#
57468次浏览
355人参与
#
你的实习什么时候入职
#
348075次浏览
2291人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务