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

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

2026/7/28 2:07:03阅读更多 →
4款专业驱动优化工具:彻底释放Windows系统性能潜能

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

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

2026/7/28 2:07:03阅读更多 →
C++---模板进阶

C++---模板进阶

非类型模板参数 /* * 一: 非类型模板参数 * 1. 内存中栈的大小大约是8M,约800W字节(按数量级估计而来) * 注:1G 1024MB 1024 * 1024KB 1024 * 1024 * 1024Byte(字节) * * 由于栈区的大小有限,如果开辟的空间过大的话可能会引发栈溢出的问…

2026/7/28 2:07:03阅读更多 →
TI bq78PL114 8S EVM评估套件:从开箱到实战的BMS开发指南

TI bq78PL114 8S EVM评估套件:从开箱到实战的BMS开发指南

1. 项目概述:从零上手TI bq78PL114 8S EVM评估套件如果你正在设计或评估一个多串锂离子电池组的管理方案,那么德州仪器(TI)的这套bq78PL114 8S EVM评估模块,绝对是你绕不开的一个“练手神器”。它不是一个简单的演示板…

2026/7/28 3:35:16阅读更多 →
WPS JS宏实现表格数据最后记录提取

WPS JS宏实现表格数据最后记录提取

1. 项目背景与需求场景在日常办公数据处理中,我们经常遇到这样的场景:一个包含多个项目数据的表格,需要提取每个项目最后一条记录进行汇总分析。比如销售部门需要查看各区域最近一次成交数据,人事部门要统计各部门最新入职员工信息…

2026/7/28 3:35:16阅读更多 →
C++ STL核心容器vector、list、map实战指南

C++ STL核心容器vector、list、map实战指南

1. STL快速入门:期末救急指南 作为C标准库的核心组成部分,STL(Standard Template Library)是每个C开发者必须掌握的利器。特别是在期末考试前的冲刺阶段,高效掌握STL的常用语句往往能让你在编程题部分事半功倍。不同于…

2026/7/28 3:35:16阅读更多 →
Codex AI编程助手:从API调用到工程集成的完整实践指南

Codex AI编程助手:从API调用到工程集成的完整实践指南

如果你还在把 Codex 简单理解为“OpenAI 出的那个代码生成工具”,那你的信息可能已经滞后了。随着 AI 技术的快速迭代,Codex 早已超越了最初的定位,它不再仅仅是一个帮你补全几行代码的助手,而是正在演变为一套能够理解复杂意图、执行多步骤任务、甚至整合到各类开发工作流…

2026/7/28 3:35:16阅读更多 →
MongoDB核心特性与实战应用指南

MongoDB核心特性与实战应用指南

1. MongoDB核心特性与适用场景解析MongoDB作为当前最流行的文档型数据库,其核心优势在于灵活的文档模型和水平扩展能力。与传统关系型数据库相比,MongoDB采用BSON(Binary JSON)格式存储数据,这种类JSON的文档结构天然支…

2026/7/28 3:35:16阅读更多 →
DIY智能墙面氛围灯:WS2812B灯带+ESP32方案全解析

DIY智能墙面氛围灯:WS2812B灯带+ESP32方案全解析

1. 项目缘起:当一面白墙在夜晚失去了灵魂我家的客厅有一面大白墙,当初装修时觉得简洁干净,挂上几幅画,白天看着挺舒服。但一到晚上,问题就来了。主灯一关,整个客厅的光源就只剩下沙发旁的落地灯和电视屏幕的…

2026/7/28 3:33:16阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →