当前位置: 首页 > news >正文

C++:继承和多态】多态加餐:面试常考——多态的常见问题11问

语法上不报错,但是至少说明作为多态调用时到虚表里去找的时候,inline函数的内联属性就丢了——正常函数的调用是call地址,跳转过去调用内联的特点:跳转过去调用,要建立栈帧,内联就不需要地址,因为内联就是调用那个符合内联属性的函数把内联展开,(当然要符合内联要求:内联要求比较短小)所以没有地址,如果这个是虚函数,虚函数必然是要有地址放进虚表里去走——如果要走多态这条路径调用的话,必然是call一个地址,找到虚表里面——看前面多态,“指向谁调用谁”——虚函数还能是内联吗?因此两个属性不能同时存在。

为什么语法编译上又能同时存在?

虚函数也不一定是多态调用。


5 ~> 静态成员函数可以是虚函数吗?

5.1 参考回答

答:不能,因为静态成员函数没有this的指针,使用类型::成品函数的调用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表。

5.2 补充


6 ~> 构造函数可以是虚函数吗?

6.1 参考回答

答:不能,因为对象中的虚函数表指针是在构造函数初始化列表阶段才初始化的。

6.2 补充

要去指向对象的虚表里去找,怎么找?对象还没有初始化完成。


7 ~> 析构函数可以是虚函数吗?什么场景下析构函数是虚函数?

7.1 参考回答

答:可以,并且最好是把基类的析构函数定义成虚函数。

7.2 补充

跟构造函数不一样,析构函数我们建议是虚函数——父类指针可能指向父亲对象也可能指向子类对象,要调用对应的析构函数,指向父类调父类,指向子类调子类,把析构函数实现成虚函数,让调用析构函数那一步变成多态调用才能符合。


8 ~> 对象访问普通函数快还是虚函数快?

8.1 参考回答

答:首先如果是普通对象调用,是一样快的。如果是指针或者引用去调用,则普通函数调用快,因为构成多态,运行时定义虚函数需要到虚函数表里面去查找。

8.2 补充

虚函数和普通函数都是放在代码段区域,都要call去调用,不同的是虚函数的指针会放到虚表——多态的那块逻辑,但虚函数的指针会放到~>如果不是作为多态调用就跟普通函数是一样的,会很快;如果作为多态调用会慢一点点(普通调用是直接call地址,多态调用要先找到虚表的指针,再去虚表那里找到对应虚函数,然后再call)。

http://www.jsqmd.com/news/476545/

相关文章:

  • 2026河北木纹水泥板厂商综合实力与选型指南 - 2026年企业推荐榜
  • Leather Dress Collection LoRA集合详解:各模型训练数据分布与风格边界说明
  • BMS软件架构实战 — 继电器驱动与状态诊断策略
  • AgenticRAGTracer:首个LLM自动构建的Agentic RAG多跳推理诊断工具,小白也能轻松学习大模型评估方法
  • Multisim实战:从零构建MC1496振幅调制器(附仿真、PCB与调试全记录)
  • 2026年选购指南:胶粘石胶水直销厂家综合实力解析 - 2026年企业推荐榜
  • 深入解析大语言模型智能体:核心架构与多智能体协作框架,值得收藏的深度指南
  • 【DVWA实战】File Upload High级别攻防:绕过三重校验与哥斯拉图片马实战
  • ESP32-S3全向轮机器人:三轮FPV小车嵌入式设计
  • shell
  • 广州电动货车租赁推荐,哪家品牌好又价格实惠 - 工业推荐榜
  • AI赋能抢码新思路:通过快马平台开发具备学习能力的智能自适应抢码器
  • 从仿真到实战:基于Multisim的推挽型射极跟随器设计与失真优化
  • 【从键盘序到精准字典】一次高效哈希爆破的实战复盘
  • 2026年广州值得选的汽车品牌,宝骏悦也plus科技感足吗 - 工业品网
  • 2026年3月,探寻知名撒肥机公司的卓越之道 - 2026年企业推荐榜
  • 从仿真到真机:人形机器人强化学习策略部署实战
  • 解决CMake升级后CMAKE_ROOT缺失问题的完整指南
  • 从零开始:手动搭建Jumpserver堡垒机全流程指南
  • 网站空白页(无任何提示,仅显示空白)错误怎么办|已解决
  • 2026年口碑好的钢结构加工定制方案推荐,专业厂家全解析 - 工业品牌热点
  • Wan2GP V18版 - 低显存畅享AI视频创作,InfiniteTalk长对话与Flux Chroma 1 HD双模加持 全面适配50系显卡
  • 剖析钢结构工程精品定制公司,苏东钢结构性价比高吗 - myqiye
  • 微信支付V2到V3公钥升级实战:从配置到回调的平滑迁移指南
  • 从原理到实践:GMSK调制解调链路在MATLAB中的仿真与性能剖析
  • Discuz论坛数据库IP地址变更的排查与修复指南
  • 【Clion】CMakeLists.txt配置优化:解决多C/C++文件编译冲突
  • 聊聊多层钢结构装配式厂家,苏东钢结构值得关注! - mypinpai
  • ESXI虚拟化环境部署Win11遇阻:巧用注册表LabConfig绕过TPM与安全启动限制
  • STM32F4 IAP实战:从Bootloader设计到PC端工具链的完整实现