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

C++ 进阶(3)虚函数表解析

个人主页:仍有未知等待探索-CSDN博客

专题分栏:C++

                                                请多多指教!

目录

一、虚函数表

二、单继承(无虚函数覆盖)

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base b 的虚函数表:

三、单继承(有虚函数覆盖)

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base b 的虚函数表:

四、多继承(无虚函数覆盖) 

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base1 b 的虚函数表:

五、多继承(有虚函数覆盖) 

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base1 b 的虚函数表:


一、虚函数表

在这个虚函数表中,主要有一个类的虚函数的地址。当我们用基类指针操作派生类的时候,其指明了实际应该调用的函数。

二、单继承(无虚函数覆盖)

class base {
public :virtual void func1() { cout<<"base::func1" <<endl;}virtual void func2() {cout<<"base::func2" <<endl;}
private :int a;
};
class derive :public base {
public :virtual void func3() {cout<<"derive::func3" <<endl;}virtual void func4() {cout<<"derive::func4" <<endl;}
private :int b;
};

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base b 的虚函数表:

三、单继承(有虚函数覆盖)

class base {
public :virtual void func1() { cout<<"base::func1" <<endl;}virtual void func2() {cout<<"base::func2" <<endl;}
private :int a;
};
class derive :public base {
public :virtual void func1() {cout<<"derive::func1" <<endl;}virtual void func3() {cout<<"derive::func3" <<endl;}virtual void func4() {cout<<"derive::func4" <<endl;}
private :int b;
};

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base b 的虚函数表:

四、多继承(无虚函数覆盖) 

class base1
{
public:virtual void f(){ cout << "base1::f()" << endl; }virtual void g(){ cout << "base1::g()" << endl; }virtual void h(){ cout << "base1::h()" << endl; }
};class base2
{
public:virtual void f(){ cout << "base2::f()" << endl; }virtual void g(){ cout << "base2::g()" << endl; }virtual void h(){ cout << "base2::h()" << endl; }
};class base3
{
public:virtual void f(){ cout << "base3::f()" << endl; }virtual void g(){ cout << "base3::g()" << endl; }virtual void h(){ cout << "base3::h()" << endl; }
};class derive : public base1, public base2, public base3
{
public:virtual void f1(){ cout << "derive::f1()" << endl; }virtual void g1(){ cout << "derive::g1()" << endl; } 
};

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base1 b 的虚函数表:

其他基类同理。

五、多继承(有虚函数覆盖) 

class base1
{
public:virtual void f(){ cout << "base1::f()" << endl; }virtual void g(){ cout << "base1::g()" << endl; }virtual void h(){ cout << "base1::h()" << endl; }
};class base2
{
public:virtual void f(){ cout << "base2::f()" << endl; }virtual void g(){ cout << "base2::g()" << endl; }virtual void h(){ cout << "base2::h()" << endl; }
};class base3
{
public:virtual void f(){ cout << "base3::f()" << endl; }virtual void g(){ cout << "base3::g()" << endl; }virtual void h(){ cout << "base3::h()" << endl; }
};class derive : public base1, public base2, public base3
{
public:virtual void f(){ cout << "derive::f()" << endl; }virtual void g1(){ cout << "derive::g1()" << endl; } 
};

继承关系表:

对于实例:derive d 的虚函数表:

对于实例:base1 b 的虚函数表:

相关文章:

C++ 进阶(3)虚函数表解析

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 请多多指教&#xff01; 目录 一、虚函数表 二、单继承&#xff08;无虚函数覆盖&#xff09; 继承关系表&#xff1a; 对于实例&#xff1a;derive d 的虚函数表&#xff1a; 对于实例&#xff1a;b…...

2024年新算法-秘书鸟优化算法(SBOA)优化BP神经网络回归预测

2024年新算法-秘书鸟优化算法(SBOA)优化BP神经网络回归预测 亮点&#xff1a; 输出多个评价指标&#xff1a;R2&#xff0c;RMSE&#xff0c;MSE&#xff0c;MAPE和MAE 满足需求&#xff0c;分开运行和对比的都有对应的主函数&#xff1a;main_BP, main_SBOA, main_BPvsBP_SB…...

kafka-主题创建(主题操作的命令)

文章目录 1、topic主题操作的命令1.1、创建一个3分区1副本的主题1.1.1、获取 kafka-topics.sh 的帮助信息1.1.2、副本因子设置不能超过集群中broker的数量1.1.3、创建一个3分区1副本的主题1.1.4、查看所有主题1.1.5、查看主题详细描述 1、topic主题操作的命令 kafka发送消息会存…...

[日常开发] 数据库主从延迟问题

MySQL数据库主从延迟问题 无论是学习还是工作中&#xff0c;MySQL数据库的使用都十分地广泛。在业务中&#xff0c;数据库也会以集群的形式使用&#xff0c;所以会涉及到主从问题。 问题描述 在使用MySQL数据库的时候&#xff0c;在service的方法中首先向A数据表批量插入了数…...

Python高层解雇和客户活跃度量化不确定性模型

&#x1f3af;要点 &#x1f3af;量化不确定性模型&#xff1a;&#x1f58a;模型检测短信编写者行为变化 | &#x1f58a;确定&#xff08;商业领域中&#xff09;竞争性替代方案 | &#x1f58a;确定作弊供词真实比例 | &#x1f58a;学生考试作弊 | &#x1f58a;确定零部件…...

【IOT】OrangePi+HomeAssistant+Yolov5智能家居融合

前言 本文将以OrangePi AIpro为基础&#xff0c;在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。 表头表头设备OrangePi AIpro(8T)系统版本Ubuntu 22.04.4 LTSCPU4核64位处理器 AI处理器AI算力AI算力 8TOPS算力接口HDMI2、GPIO接口、Type-C、M.2…...

Python 点云裁剪

点云裁剪 一、介绍1.1 概念1.2 函数讲解二、代码示例2.1 代码实现2.2 代码讲解三、结果示例一、介绍 1.1 概念 点云裁剪 :根据待裁剪对象的多边形体积(json文件)实现点云的裁剪。 1.2 函数讲解 下面代码示例中主要用到了两个函数。 读取待裁剪对象的多边形体积信息(json文…...

Presto 从提交SQL到获取结果 源码详解(2)

逻辑执行计划&#xff1a; //进入逻辑执行计划阶段 doAnalyzeQuery().new LogicalPlanner().plan(analysis);//createAnalyzePlan createAnalyzePlan(analysis, (Analyze) statement);//返回RelationPlan&#xff0c;&#xff08;返回root根节点&#xff0c;逻辑树上包含输出字…...

Python的类全面系统学习

文章目录 1. 基本概念1.1 类&#xff08;Class&#xff09;1.2 对象&#xff08;Object&#xff09; 2. 类的属性和方法3. 类的继承3.1 继承的概念3.2 单继承3.3 多重继承 4. 方法重写与多态4.1 方法重写4.2 多态 5. 特殊方法与运算符重载5.1 特殊方法&#xff08;魔法方法&…...

信号处理中简单实用的方法

最小二乘法拟合消除趋势项 消除趋势项函数 在MATLAB的工具箱中已有消除线性趋势项的detrend函数&#xff1b;再介绍以最小二乘法拟合消除趋势项的polydetrend 函数。 函数:detrend功能:消除线性趋势项 调用格式:ydetrend(x) 说明:输入参数x是带有线性趋势项的信号序列,输出…...

Jeecg | 如何解决 ERR Client sent AUTH, but no password is set 问题

最近在尝试Jeecg低代码开发&#xff0c;但是碰到了超级多的问题&#xff0c;不过总归是成功运行起来了。 下面说说碰到的最后一个配置问题&#xff1a;连接redis失败 Error starting ApplicationContext. To display the conditions report re-run your application with deb…...

数据容器:set(集合) 更新啦!

数据容器&#xff1a;set&#xff08;集合&#xff09; 1.集合的定义方式 {元素, 元素, 元素} # 定义集合 my_set {"欣欣向荣", "嘉嘉", "red", "欣欣向荣", "嘉嘉", "red", "欣欣向荣", "嘉嘉…...

算法入门----小话算法(1)

下面就首先从一些数学问题入手。 Q1&#xff1a; 如何证明时间复杂度O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!) < O(NN)? A&#xff1a; 如果一个以整数为参数的不等式不能很容易看出不等的关系&#xff0c;那么最好用图示或者数学归纳法。 很显…...

Vue | 自定义组件双向绑定基础用法

Vue | 自定义组件双向绑定基础用法 vue 中&#xff0c;由于单向数据流&#xff0c;常规的父子组件属性更新&#xff0c;需要 在父组件绑定相应属性&#xff0c;再绑定相应事件&#xff0c;事件里去做更新的操作&#xff0c;利用语法糖 可以减少绑定事件的操作。 这里就简单的梳…...

python使用modbustcp协议与PLC进行简单通信

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...

mongodb在游戏开发领域的优势

1、分布式id 游戏服务器里的大部分数据都是要求全局唯一的&#xff0c;例如玩家id&#xff0c;道具id。之所以有这种要求&#xff0c;是因为运营业务上需要进行合服操作&#xff0c;保证不同服的数据在进行合服之后&#xff0c;也能保证id不冲突。如果采用关系型数据库&#x…...

大数据Scala教程从入门到精通第十篇:Scala在IDEA中编写Hello World代码的简单说明

一&#xff1a;代码展示 object Main {def main(args: Array[String]): Unit {//SCALA中可以不写;//绿色的小三角达标的是这个类中有一个MAIN方法代表是可以执行的。//ctrl shift f10可以直接运行println("Hello world!")//Java中的类库我们可以直接使用System.o…...

【SPSS】基于因子分析法对水果茶调查问卷进行分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

ElasticSearch学习篇12_《检索技术核心20讲》基础篇

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243 课程分为基础篇、进阶篇、系统案例篇 主要记录企业课程学习过程课程大纲关键点&#xff0c;以文档形式记录笔记。 内容 检索技术&#xff1a;它是更底层的通用技术&#xff0c…...

Reids高频面试题汇总总结

一、Redis基础 Redis是什么? Redis是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令来操作这些数据结构。Redis的主要特点是什么? 高性能:Redis将数据存储在内…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...