新闻详情

新闻详情

首页 / 资讯中心 / 详情

派生类重写基类虚函数(二):override的作用

发布时间:2026/10/1 22:10:57来源:尧图网络
派生类重写基类虚函数(二):override的作用
一、源代码#includeiostream// /*structBase{virtualvoidf(){}};structDerived:Base{voidf()override;};intmain(){Base*pnewDerived;return0;}关于polymorph.cpp:9中void f() override;的说明void f() override;只是函数声明不是函数定义。没有函数体与override没有关系。1. 为什么可以没有函数体C 允许在类中先声明成员函数再在类外定义structDerived:Base{voidf()override;// 声明告诉编译器有这个函数};voidDerived::f()// 定义提供函数体这里不再写 override{std::coutDerived::f()\n;}也可以直接在类内定义structDerived:Base{voidf()override{}// 定义函数体为空表示什么也不做};注意两种写法的区别写法含义void f() override;只有声明还没有提供实现void f() override {}已经提供实现只是函数体为空源代码当前只有声明缺少Derived::f()的定义。下方注释掉的示例使用的是第二种写法所以那里有函数体。2.override的作用是什么override是 C11 引入的说明符意思是“我打算让这个函数重写基类的虚函数请编译器帮我检查。”你的基类在polymorph.cpp:5中定义了virtualvoidf(){}因此派生类的voidf()override;确实重写了基类的虚函数检查通过。如果不小心把参数写错structDerived:Base{voidf(intx)override{}// 编译错误基类中没有对应的虚函数};编译器就会指出问题。如果不写override这个f(int)可以被当作另一个函数不能达到你想重写Base::f()的目的却不一定报错。真正使函数具备虚调用行为的是基类的virtualoverride主要用于检查重写关系、表达意图。正确重写时即使不写override重写关系仍然成立。3. 当前代码能正常生成程序吗不能。我实际编译了当前文件链接阶段出现undefined reference to vtable for Derived原因是main()中执行了Base*pnewDerived;创建Derived对象需要其虚函数表但Derived::f()没有定义因此出现链接错误。即使没有显式调用p-f()这里也会出错。最简单的修正就是把声明改为voidf()override{}总结override负责“检查是否正确重写”不负责生成函数体也不会自动使用基类的函数体。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

ConcurrentHashMap并发原理与实战:从CAS到锁演进及避坑指南 2026/10/1 23:00:23

ConcurrentHashMap并发原理与实战:从CAS到锁演进及避坑指南

先用一个日常场景把话题引出来吧:搞Java并发编程的人,几乎都绕不开这个类。面试官喜欢问,线上排查高并发问题也经常跟它打交道。1. 为什么并发场景下你不该再碰HashMap和Hashtable很多人在项目里写并发代码,一遇到需要共享Map就纠…

阅读更多 →
VMD-Attention-LSTM预测实战:信号分解+注意力机制提升非平稳序列预测精度 2026/10/1 23:00:23

VMD-Attention-LSTM预测实战:信号分解+注意力机制提升非平稳序列预测精度

简介:这是基于VMD-Attention-LSTM的时间序列预测模型完整实践包,覆盖变分模态分解、注意力机制与长短期记忆网络的组合建模流程。项目使用较小数据集演示从数据预处理、VMD特征分解、模型构建到训练与预测的完整链路,并附详细代码注释&#x…

阅读更多 →
论文AIGC率检测全解读:标准、影响因素与应对指南 2026/10/1 23:00:23

论文AIGC率检测全解读:标准、影响因素与应对指南

“查重过了,AIGC又被卡了”,这是最近几个月我听到频率最高的一句话。论文AIGC率,也就是论文中疑似由AI生成内容所占的比例,已经成了学位论文送审、答辩前绕不开的一道新关卡。很多同学拿着查重报告自信满满地提交,结果…

阅读更多 →
vLLM线程模型解析:run_engine_core中三个线程如何协作提升GPU利用率 2026/10/1 23:00:23

vLLM线程模型解析:run_engine_core中三个线程如何协作提升GPU利用率

从部署一个embedding模型说起。我有天在容器里跑vllm/vllm-openai:v0.27.1加载qwen3-embedding-0.6b&#xff0c;进去ps -ef发现了run_engine_core这个进程&#xff0c;顺手ps -T -p <pid>看了一眼&#xff0c;发现里面整整齐齐躺着三个线程。群里也有不少人问过&#xf…

阅读更多 →
文献综述写作全流程拆解:从检索到成稿,告别读书笔记式综述 2026/10/1 23:00:22

文献综述写作全流程拆解:从检索到成稿,告别读书笔记式综述

1. 本科文献综述为什么总写成一堆“读书笔记”每到毕业季&#xff0c;我都能在朋友圈刷到同一种哀嚎&#xff1a;文献综述写了三天三夜&#xff0c;导师一句“没有综&#xff0c;只有述”就给打回来了。这几乎是本科阶段写论文最常见的卡点&#xff0c;也是论文zz这类工具被戏称…

阅读更多 →
跨越研发鸿沟:从AI辅助到AI原生组织的三级进化与实践 2026/10/1 23:00:16

跨越研发鸿沟:从AI辅助到AI原生组织的三级进化与实践

先说个我最近的真实感受。年初我带一个三十多人的研发团队做AI转型&#xff0c;刚开始所有人都很兴奋——Copilot装上了&#xff0c;ChatGPT Plus也配了&#xff0c;测试那边也开始用AI生成脚本。结果三个月过去&#xff0c;代码量上去了不少&#xff0c;但线上故障率没降&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉