虚函数的调用机理

article/2025/10/7 13:10:25

C++中,必然会接触到虚函数这个概念,那么,会不会对虚函数的内部机理产生疑问呢?而这里,就是对其的简单的研究(本人水平有限(。•́︿•̀。) )

首先,先来简单介绍一下虚函数的机制(知道的跳过)

把父类的函数写成虚函数,子类继承后,接着重写该函数。然后在主函数中用子类对象调用该函数时会调用子类重写的函数。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDlgrLkuJbvvIzlk7I,size_20,color_FFFFFF,t_70,g_se,x_16

虚函数机理 

首先,当给父类的一个函数写上virtual后,那么,系统就会给父类分配一个虚函数指针,指向一个虚函数表,虚函数表当中,保存的就是该函数的地址,写几个虚函数,虚函数列表里就有几个成员。watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDlgrLkuJbvvIzlk7I,size_20,color_FFFFFF,t_70,g_se,x_16

当子类继承父类时,会继承虚函数指针,同时系统会给子类分配一个虚函数表,而虚函数指针指向虚函数表。虚函数表中的内容与父类一样,如果重写,则会对虚函数列表里的地址进行覆盖,其保存的,则是重写的函数对应的代码区地址。watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDlgrLkuJbvvIzlk7I,size_20,color_FFFFFF,t_70,g_se,x_16 

 关于虚函数的一些进阶问题

到这里,我们就大概了解了虚函数的的内部机理。但还是有几个问题值得我们去思考,当然,这也是我对读者们的挑战(哼哼)从而更深入地了解c++这一门语言的细节(❀」╹□╹)」*・

问题一:为什么不能把父类构造函数写成虚析构?

问题二:如果要用父类指针创建子类对象时,为什么要最好把父类析构写成虚析构?

最后,附图一张watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDlgrLkuJbvvIzlk7I,size_20,color_FFFFFF,t_70,g_se,x_16

欢迎评论,吐槽也可鸭🦆 


http://chatgpt.dhexx.cn/article/Q0lhB7D3.shtml

相关文章

系统调用

程序接口是 OS 专门为用户程序设置的,也是用户程序取得 OS 服务的唯一途径。程序接口通常是由各种类型的系统调用所组成的,因而,也可以说,系统调用提供了用户程序和操作系统之间的接口,应用程序通过系统调用实现其与 O…

舵机内部结及工作原理浅析

一、舵机实物图 就像上面这张照片,相信大家都不会陌生,我们常见到的舵机就是这个模样,一般是塑料外壳,当然很少见的也有金属外壳的舵机,因为涉及到控制信号,所以一般有三条引出线。 像上图所示的样子&#…

舵机控制原理详解

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出…

PWM驱动舵机原理、SG90、舵机控制

舵机自控系统 自控制电路板接收来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出…

舵机的原理和控制

舵机的原理和控制控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后&#xff0c…

小白入门STM32(2)---控制SG90舵机---基础工作原理详解

文章目录 序言一、基础理论1.1 舵机控制原理--PWM习题 1.2 定时器1.2.1 基础定时器时钟装置循环计数器 1.2.2 比较定时器习题 二、实战上手2.1 设置定时器和单片机接线习题 2.2 代码 三、习题答案 序言 本人一枚软件编程人员,有一定C语言基础,目前自学S…

舵机的控制

舵机是一种位置「角度」伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具、航模、机器人中已经得到普遍使用。舵机是一种俗称,其实是一种伺服马达。本篇通过官方驱动库来实现舵机控制。 一. 舵机介绍 1、结构组成 舵机…

51单片机SG90舵机控制原理

舵机三根线的接法:黄线接信号线,红线接vcc,褐色线接GND 舵机控制原理:通过控制PWM来控制舵机转动的角度,关于PWM的知识可以去智能小车专栏进行学习,转动周期设置为20ms,控制高电平的时间来进行舵机转动的角度。 对于1…

单片机PWM舵机控制原理

舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms---…

STM32 PWM控制舵机——原理、接线、源程序

STM32——PWM 控制舵机 通用定时输出PWM PWM的工作原理PWM的模式 TIM_OCMode_PWM1 (边沿对齐模式)TIM_OCMode_PWM2(中央对齐模式) 占空比 舵机 实物图接线舵机工作原理周期TPWM占空比 TIM3 PWM输出 驱动SG90电机 配置过程&#xf…

pwm波控制舵机原理(转)

文章转自:http://www.geek-workshop.com/thread-70-1-1.html 一、关于舵机: 舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。…

pwm信号控制舵机的简单原理

pwm信号控制舵机的简单原理 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后&…

SG90舵机的原理和控制方式

前言 做过机器人、智能车或者玩航模的朋友应该对舵机不会陌生,这种舵机也是很常用的。 舵机只是我们通俗的叫法,它的本质是一个伺服电机,也可以叫做位置(角度)伺服驱动器。一般被应用在那些需要控制角度变化的系统中,可以方便的…

舵机控制原理和结构

原文:https://blog.zeruns.tech/index.php/archives/358/ 什么是PWM信号 PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅…

舵机控制原理/舵机内部电路原理

舵机结构 舵机是我们常用到的末端执行器,但是在应用时我们只知道利用一定频率和周期的PWM来控制其摆动一定角度。及控制器给舵机一个周期为20ms的PWM波,高电平时间为0.5ms时对应0,高电平时间为2.5ms时对应180。以上规律适用于大多数180摆角的…

矩阵谱半径与矩阵范数的关系

摘自 程云鹏. 矩阵论(第二版)[M]// 矩阵论(第二版). 西北工业大学出版社, 2000. p135~p137

谱半径

矩阵的谱或叫矩阵的谱半径,在特征值估计、广义逆矩阵、数值分析以及数值代数等理论的建树中,都占有极其重要的地位; 矩阵的谱半径为矩阵的特征值的模的最大值。 关于矩阵的谱(半径)的一个重要性质即是:任意…

【矩阵论笔记】谱半径

定义 例子 谱半径比他的诱导范数都小。 证明 例子 hemite对称矩阵 谱半径什么时候跟诱导范数相等?答曰:Hermite矩阵。

python求矩阵的谱半径

在学习计算方法的时候,线性方程组的迭代法中的雅可比(Jacobi)迭代法和高斯-塞德尔(Gauss-Seidel)迭代法的收敛条件中需要求矩阵的谱半径,而经过查阅资料,python numpy库中没有直接求谱半径的函数。 谱半径的定义为: 设A是n n矩阵…

实对称阵的谱半径是连续函数

矩阵的诱导范数(算子范数)的定义: ∣ ∣ A ∣ ∣ sup ⁡ ∣ ∣ x ∣ ∣ 1 ∣ ∣ A x ∣ ∣ ||A|| \sup_{||x|| 1}||Ax|| ∣∣A∣∣∣∣x∣∣1sup​∣∣Ax∣∣其中,||||可以是任何向量范数,由于该矩阵范数是由向量范…