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

C++学习笔记 05 虚函数

一、虚函数的意义

虚函数引入了一种动态分配的概念,一般通过虚表(vtable)来实现编译。虚表就是一个包含所有虚函数映射的列表。通过虚表,我们可以在运行时找到正确的被重写的函数。简单来说,如果你想重写一个函数,那么你必须要把基类中的原函数设置为虚函数,否则父类引用调用的方法则是父类自身的方法,而不是根据创建实例的具体子类动态判断的。

二、虚函数的额外开销:

  1. 额外的内存来存储虚表,这样我们可以分配到正确的函数(父类指针指向哪种子类对象)
  2. 父类里有一个指针成员指向虚表。
  3. 每次调用虚函数的时候,必须要遍历续表去找到最终要运行的函数。
#include<iostream>
#include<string>class Entity {
public://std::string getName() {virtual std::string getName() {return "Entity";}
};class Player : public Entity {
private:std::string m_Name;public:Player(const std::string& name) {m_Name = name;}std::string getName() override {return m_Name;}
};void printEntity(Entity* e) {std::cout << e->getName() << std::endl;
}int main() {Entity* e = new Entity();printEntity(e); //EntityPlayer* p = new Player("Tom");printEntity(p); //Tom//父类引用指向子类对象,多态调用Entity* p1 = new Player("Jack");//父类此方法若有virtual 关键字,则调用子类的方法,否则调用父类的方法printEntity(p1);std::cin.get();
}

三、override 关键字

  1. c++ 11引入
  2. 编译期可以校验父类方法是否是虚函数
  3. 编译期可以校验子类方法名称是否正确

纯虚函数

本质与Java中的抽象方法或接口方法相同。原理上讲,纯虚函数允许我们定义一个在基类中没有实现的函数,然后强制子类中去实现这个函数。

四、纯虚函数

virtual std::string getName() = 0;

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

相关文章:

  • 深圳专业少儿芭蕾机构推荐,深度解析苏菲艺术教育的国际化基因与专业坐标 - 速递信息
  • onlyoffice documentserver Docker 容器化部署指南
  • 风险管理
  • 国产阀门企业盘点 - 速递信息
  • C++学习笔记 04 构造函数 和 析构函数
  • 2025年佛山债务纠纷律师事务所推荐:实力强的债务纠纷律师 - mypinpai
  • 原始字面量
  • 揭示2025重庆全屋定制供应商排行,主要有哪些优质厂家推荐? - 讯息观点
  • 【分布式利器:RocketMQ】2、RocketMQ消息重复?3种幂等优秀的方案,彻底解决重复消费(附代码实操)
  • 2025年12月飓丰4.2米保温车,飓丰纯电动保温车,飓丰小型保温车厂家推荐:冷链行业权威盘点与品质红榜发布​ - 品牌鉴赏师
  • 六恒空气管理系统综合性价比多方面对比推荐品牌 - 速递信息
  • 六恒空气管理系统综合性价比多方面对比推荐品牌 - 速递信息
  • 水动力模型中的冷启动和热启动的区别
  • 2025年不锈钢螺母厂家推荐榜单:不锈钢螺丝‌/四方螺母‌/六角焊接螺母源头厂家精选 - 品牌推荐官
  • 【ACM出版 | EI检索】第五届大数据经济与数字化管理国际学术会议(BDEDM 2026)
  • 必看!2025年广东制冷量优质驻车空调品牌推荐 - 讯息观点
  • 强行修改Git提交记录的提交人和邮箱
  • 2025年国内全自动粘钉一体机厂家权威推荐榜单,目前专业的全自动粘钉一体机公司哪家好优质品牌榜单更新 - 品牌推荐师
  • Vibe Coding 你应该更激进:用最 SOTA 的模型,赚最高的时薪|编码人声
  • 2025年全屋定制家哪家好?十大品牌硬核实力解码与品质之选指南,欧蒂尼家居引领行业 - 速递信息
  • LINUX设备树
  • 2025年小型风力发电机厂家权威推荐榜单:微风发电/垂直轴风机发电机/太阳能发电系统源头厂家精选 - 品牌推荐官
  • 洗衣液品牌方会协助开发线下渠道吗?新手代理商必看真相 - 速递信息
  • 2025年浙江网站建设机构推荐榜单:外贸网站建设‌/商城网站建设‌/高端网站建设源头机构精选 - 品牌推荐官
  • 机器学习解析新闻引语:从定义到实体识别
  • 2025年杭州电子名片公司推荐榜单:免费电子名片‌/企业电子名片‌/微信电子名片源头公司精选 - 品牌推荐官
  • 手把手教你使用Ventoy将一个U盘装多个系统镜像+PE镜像(微PE)
  • 成都新中式仿古门窗厂家推荐:2025 年权威榜发布 - 朴素的承诺
  • 2025 年四川户外防腐木地板公司排名榜:产品权威评测 - 朴素的承诺
  • 2025 年成都天然气掺氢设备生产厂家最新实力榜 - 朴素的承诺