码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 多态2........


    虚函数的virtual和虚继承腰部的virtual没有一点关系!

    多态和虚继承都在内存中产生了额外的东西(多态是多了虚VFT指针指向虚函数表,虚继承是多了虚基表(保存了偏移量),但是他们两个没有一点关系!
    那要是两个套在一起呢?那也是各是各的,你解决你的数据冗余二义性,我解决我的多态问题。

    再次理解这个题目
    在这里插入图片描述
    为什么调用func()的this指针是A* 呢 而不是B*?
    考虑到之前继承中子类对父类进行构造需要调用父类的构造函数,也就是说各玩各的,那么这里在test()里面调用func(),它this指针应该是A*,因为各玩各的。
    A* 指向B对象发生了切片,因为new的是B对象,B对象调用了test( )。
    所以这里符合多态条件1,父类指针指向子类对象
    条件2,三同满足但是缺省参数不同,这里只需要形参类型相同就可以和缺省参数无关,那么条件2也满足
    这里需要注意子类重写父类的虚函数只重写了父类虚函数的函数体内容,套用的还是父类的函数外壳(返回值函数名函数形参),所以这里缺省参数是int val = 1;

    派生类继承父类的虚函数,只要有虚函数就会有虚表,对象里面就会存一个虚表指针
    在这里插入图片描述
    那么看到这里不满足多态条件2 ,我没有重写父类的虚函数
    还可以看到虚表指针不一样,说明两张虚表不一样(但是保存的都是父类的虚函数指针(因为没有重写)),这很正常啊,一个是父类一个是子类,子类拷贝了父类的虚表,他们不同没什么问题啊,不会互相影响。你要满足多态那我就覆盖父类的虚表就可以了。

    但是对于相同类型的对象来说,他们是可以公用同一张虚表的。
    在这里插入图片描述

    关于重写和覆盖
    重写是语言层面上,我子类重写了父类的虚函数
    覆盖是底层上来说我覆盖了父类的虚函数地址,改为我重写后的虚函数地址

    关于动态绑定和静态绑定
    对于函数重载在编译时就可以通过函数名修饰规则找到调用函数

    但是多态是比函数重载要慢一步找到要调用哪个函数的,多态是在运行时到虚表里面去找调用哪个函数。

  • 相关阅读:
    Qt·事件处理机制
    用Python写一个猜数字的小游戏
    report | 使用 Docker版的 gitbook 把 markdown 转为 html 报告 (静态站点)
    医学影像SAM
    重试机制-spring-retry、guava-retry
    2021 华数杯全国大学生数学建模竞赛C题-基于神经网络预测电动汽车目标客户销售策略(三)(附带赛题解析&获奖论文及MATLAB代码)
    java毕业设计成品源码网站ssm水果商城系统电商购物项目
    【操作系统】文件系统的逻辑结构与目录结构
    python数据可视化-matplotlib入门(3)-利用随机函数生成变化图形2
    shiro配置文件shiro.ini简介说明
  • 原文地址:https://blog.csdn.net/weixin_50809457/article/details/133990303
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号