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

c++对象模型--多态,运行时类型识别

虚函数机制

  • 单一继承
    单一继承下,类型包含虚函数时,每个class有一个virtual table,内含该class中有作用的virtual function的地址,然后每个class object有一个vptr,执向virtual table所在。

Point:

Point2d:


Point3d:

类型和虚表:


  • 多重继承
    Base1:



    虚表:

    标*的虚表槽内执行的执行路径会包含对应的指针处理,再引发对应的函数调用。



成员函数指针

  • 普通成员函数指针(非静态,非虚拟)
    得到的结果是它在内存中真正的地址

  • 执行虚拟成员函数指针


  • 多重继承下,虚拟继承下
    考虑场景更复杂。

一种可能采用的成员指针结构:

根据存储的不同成员函数特点,设置不同字段。翻译调用时,依据字段识别类型,出发相应场景下调用逻辑。

运行时类型识别

1.typeid
对类型或类型实例执行typeid返回一个type_info对象,用于描述类型。
type_info的相等操作符,和成员函数可用于运行时获取类型信息

2.dynamic_cast
实现基类指针转换到派生类指针时,转换失败,返回null。
实现基类引用转换到派生类引用时,转换失败,抛出异常。

http://www.cnnetsun.cn/news/4082336.html

相关文章:

  • Unity Mod Manager 使用教程:给 Unity 游戏装模组,看这一篇就够了
  • Windows系统文件srwmi.dll丢失找不到问题解决
  • Stretchly 免费休息提醒工具全攻略:科学管理屏幕时间,告别久坐疲劳
  • 微信私域流量运营技术解析:多号聚合与智能分发
  • Day52 | 分布式定时任务:XXL-JOB/Elastic-Job/PowerJob全面对比
  • 3DSident 0.9.4 系统检测全指南:5 步查清 3DS 的硬件底细
  • DRA7xx RTOS构建配置实战:从异构多核到内存隔离的完整指南
  • GraphFlow:基于形式化验证与契约设计构建可靠AI工作流架构
  • DeepSeek Harness 小白入门 18:max_tokens 为什么必须显式设置?新手最容易漏的护栏
  • 汽车维修店预约70590----- APPAndroid + SpringBoot + MySQL|一张维修工单如何从“选维修员”走到“完工评价”
  • 免费开源AI语音识别实战:Faster-Whisper-GUI音频转文字完整指南
  • qBittorrent 聚合搜索从零到一:5 分钟装好 search-plugins,一个搜索框搜遍全网资源
  • 固态电池上车挑战与天际辉能合作背后的产业逻辑分析
  • STM32H7多RTOS集成实战:FreeRTOS、uCOS、RTX对比与选型指南
  • 独立站搭建平台有哪些?外贸询盘、跨境零售和品牌官网怎么选
  • 如何使用阿贝云建立免费个人服务器
  • 人机协同新范式,奇点大会探讨 RLHF 与 RMHF 融合
  • Magisk安装完全指南:Android Root、Boot镜像修补与翻车自救一次讲清
  • 从零搭建AI编程体验空间:技术架构、部署与实战指南
  • 微信小程序开发实战:LBS社交应用架构与优化
  • Figma 汉化插件怎么装?三种免费方法让界面秒变中文(附新手避坑清单)
  • XGBoost在Kaggle竞赛中的优势与应用实践
  • 嵌入式C语言动态内存对齐分配实战:从原理到XMC4700项目应用
  • 外贸的整体流程 独立站建站的整体强度 优化
  • 基于DeepSeek的对话历史摘要与缓存优化方案:降低LLM API成本
  • 豪华车价格战背后的市场逻辑:从品牌溢价到价值驱动的转变
  • 音乐解密告别“格式监禁“:免费跨平台,本地把加密音乐转成MP3/FLAC
  • 汽车产品组合策略:双车共售的底层逻辑与实战挑战
  • LLM智能体推理退化检测与恢复:轻量并行监控架构实践
  • GitHub热榜趋势解析:AI应用、效率工具与垂直领域创新