C++---多态入门

发布时间:2026/7/28 2:06:59

C++---多态入门
虚函数的重写所以虚函数的重写实际上在重写的是函数体多态的实现也是靠重写虚函数实现的。注意上边的ptr始终是Person类型的指针图片里说的ptr的指向是指的其指向的对象因为传给ptr的是指向Student的指针ptr指向的对象是Student指向哪个对象调用的就是该对象里的函数体。一道恶心的题问程序运行结果是什么class A { public: virtual void func(int val 1) { std::cout A- val std::endl; } virtual void test() { func(); } }; class B : public A { public: void func(int val 0) { std::cout B- val std::endl; } }; int main(int argc, char* argv[]) { B* p new B; p-test(); p-func(); return 0; }首先明确继承不是拷贝说白了只是改变了编译器的查找逻辑让编译器多到一个地方去找然后定义派生类的对象的时候在内存里上边先有一份基类下边才是自己的成员。p是指向B的指针p调用test函数是先在B里没找到再去A里找到了因此就调用A里的testA里的test的this指针指向的自然就是A*this指针去调用func由于this真正指向的是B因此就去调用B里的func跟上边同理仅仅只是使用函数体函数声明还是A里的函数声明因此val的缺省值是1。所以程序运行结果就是B-1。注意上边的分析都是建立在多态的前提之下的func构成多态满足多态的2个条件。这里别看两个func的参数缺省值不一样但它们是构成重写的重写有3同只要是返回值类型函数名函数参数列表相同(参数列表的类型相同)跟缺省值什么的都没关系。改编此时运行结果又如何。B* p new B; p-func();结果是B-0这里的调用就是普通调用根本不构成多态调用func的仅仅是B*类型的指针也就是派生类自己本类型的指针在调用自己类里边的成员函数。析构函数的重写class A { public: ~A() { cout ~A() endl; } }; class B : public A { public: ~B() { cout ~B() endl; } }; int main() { //普通调用就是直接看类型就可以了 A* p1 new A; A* p2 new B; delete p1; delete p2; return 0; }由于普通调用直接看类型p1和p2都是A类型的指针delete的时候自然就是调用了两次A类里的析构函数没有调用B类的析构此时造成内存泄露。delete的原理是先调用对应类的析构函数再调用operator delete底层用free释放资源。所以我们需要将~A()变成虚函数实现多态解决内存泄露。虚函数表(本质是函数指针数组)当派生类继承含有虚函数的基类时其虚函数表并非直接拷贝基类虚函数表而是以基类虚函数表为模板进行构建编译器先将基类虚函数表的所有条目完整继承到派生类虚函数表中若派生类重写了基类的某个虚函数会将派生类虚函数表中该虚函数对应位置的函数指针替换为派生类自身重写后的函数地址(即实现 “覆盖”)。派生类独有的、基类中没有声明的虚函数会按声明顺序追加到派生类虚函数表的末尾。

相关新闻

企业虚拟化平台国产化迁移实战:从VMware到浪潮InCloud Sphere

企业虚拟化平台国产化迁移实战:从VMware到浪潮InCloud Sphere

2026/7/28 2:06:59

1. 项目背景与挑战去年夏天,我参与了一个大型国企的虚拟化平台升级项目。这家企业原有400多台业务虚拟机运行在VMware vSphere 6.5环境上,面临着三个迫在眉睫的问题:一是原平台即将结束生命周期支持,二是需要满足国产化替代要求&a…

4款专业驱动优化工具:彻底释放Windows系统性能潜能

4款专业驱动优化工具:彻底释放Windows系统性能潜能

2026/7/28 2:06:59

4款专业驱动优化工具:彻底释放Windows系统性能潜能 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/…

java 接口签名 参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名

java 接口签名 参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名

2026/7/28 1:56:59

/*** sign 签名 &#xff08;参数名按ASCII码从小到大排序&#xff08;字典序&#xff09;keyMD5转大写签名&#xff09;* param map* return*/ public static String encodeSign(SortedMap<String,String> map,String key){if(StringUtils.isEmpty(key)){throw new Runt…

每天盯十几个店铺后台手动改价,直到跨境大促前系统崩了——你还要对Excel‘将就’多久?

每天盯十几个店铺后台手动改价,直到跨境大促前系统崩了——你还要对Excel‘将就’多久?

2026/7/28 2:57:02

每天早上9点&#xff0c;你把亚马逊、eBay、速卖通三个后台挨个登录一遍&#xff0c;像个机器人一样对着Excel表格核对价格、库存、促销。赶上黑五前夜&#xff0c;活动开始前两小时&#xff0c;系统卡住了——API请求超时&#xff0c;你眼睁睁看着价格没更新&#xff0c;后台响…

UI-TARS终极指南:零基础实现桌面自动化革命

UI-TARS终极指南:零基础实现桌面自动化革命

2026/7/28 2:57:02

UI-TARS终极指南&#xff1a;零基础实现桌面自动化革命 【免费下载链接】UI-TARS Pioneering Automated GUI Interaction with Native Agents 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS 在数字时代&#xff0c;你是否厌倦了每天重复点击相同的按钮、填…

告别熬夜加班!易标投标工具箱:你的AI智能标书写作助手终极指南

告别熬夜加班!易标投标工具箱:你的AI智能标书写作助手终极指南

2026/7/28 2:57:02

告别熬夜加班&#xff01;易标投标工具箱&#xff1a;你的AI智能标书写作助手终极指南 【免费下载链接】OpenBidKit_Yibiao 开箱即用的AI标书编写工具&#xff0c;标书AI生成工具&#xff0c;投标工具箱、知识库、标书查重、废标项检查&#xff0c;完全开源免费&#xff0c;欢迎…

.NET Core企业级后台开发框架实战与优化

.NET Core企业级后台开发框架实战与优化

2026/7/28 2:57:02

1. 项目概述&#xff1a;企业级后台开发框架的痛点与解决方案在数字化转型浪潮中&#xff0c;企业后台管理系统面临着开发效率低、技术栈陈旧、扩展性差三大核心痛点。传统开发模式往往需要从零搭建权限管理、日志监控等基础模块&#xff0c;消耗开发者60%以上的时间在重复造轮…

电商大促AI客服实战:提升转化率与降低成本

电商大促AI客服实战:提升转化率与降低成本

2026/7/28 2:57:02

1. 大促场景下的客服挑战与AI解决方案618、双11这类电商大促期间&#xff0c;商家最头疼的往往是客服接待能力跟不上暴涨的咨询量。去年我帮一家女装店铺做复盘时发现&#xff0c;大促首日他们流失了37%的潜在客户——不是因为库存不足&#xff0c;而是客服响应超时导致顾客流失…

Genesis机器人仿真平台:解锁下一代具身智能研究的5大核心优势

Genesis机器人仿真平台:解锁下一代具身智能研究的5大核心优势

2026/7/28 2:47:01

Genesis机器人仿真平台&#xff1a;解锁下一代具身智能研究的5大核心优势 【免费下载链接】genesis-world Simulation platform for general-purpose robotics & embodied AI learning. 项目地址: https://gitcode.com/GitHub_Trending/genesi/genesis-world Genesi…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/27 8:45:59

目标&#xff1a;电脑作为RTSP 服务端&#xff0c;循环推送 H264/H265 视频流&#xff1b; RDK X5 通过 rtsp2display 拉流预览&#xff0c;完全不需要在开发板编译 live555。 提供两套成熟方案&#xff1a; ✅ 方案 A&#xff1a;FFmpeg&#xff08;最简单&#xff0c;优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/27 8:42:17

一、背景与测试方案 在实际项目交付中&#xff0c;PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及&#xff1a;多源PDF的文件流合并、页面级水印渲染&#xff08;含透明度混合与图层叠加&#xff09;、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/27 14:56:57

说实话&#xff0c;提到PDF拆分再压缩&#xff0c;我真是被折腾得够呛。 上个月公司年度合同归档&#xff0c;一份300多页的PDF总合同&#xff0c;需要按年份拆分成三个独立文件&#xff0c;再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单&#xff1f;先找个海…

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

2026/7/28 0:06:55

&#x1f4cc; 一、工具核心优势盘点 数据本地存储&#xff0c;安全系数高所有操作日志、文档资料均保存在本机&#xff0c;不会上传至云端&#xff0c;能够有效保护企业文件与个人隐私&#xff0c;规避数据泄露风险。 上手简单&#xff0c;零编程门槛采用全图形化可视化界面&…

计算机毕业设计之基于springboot的购物平台设计与实现

计算机毕业设计之基于springboot的购物平台设计与实现

2026/7/28 0:06:55

由于移动应用技术的持续性的快速发展&#xff0c;现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此&#xff0c;许多的人工传统行业也开始与互联网结合&#xff0c;不再一味的依靠人工手动&#xff0c;努力打造半自动数字化甚至是全自动数字化模…

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

2026/7/28 0:06:55

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;豆包AI绘图提示词失效现象全景扫描 近期大量用户反馈&#xff0c;豆包&#xff08;Doubao&#xff09;AI绘图功能对常规提示词&#xff08;Prompt&#xff09;响应异常&#xff1a;语义明确的指令被忽略、中英…