C++ 几句话彻底点通虚表

server/2024/10/18 21:23:31/
#include <iostream>using namespace std;class Base
{
public:virtual void show() // 声明虚函数{cout << "Base" << endl;}
};class Derived : public Base
{
public:void show() override // 覆盖虚函数{cout << "Derived" << endl;}
};int main()
{Base *ptr = new Derived();ptr->show(); // 运行时解析 Q:为什么会输出 Derived ?delete ptr;return 0;
}

这里,调用ptr->show()时的具体步骤为:

  • ptr所指对象的内存开始处读取vptr(虚指针)

  • 使用vptr(虚指针)访问虚表。

  • 在虚表中查找show()函数对应的条目(因为Derived类覆盖了Base类show(),所以虚表里的指针指向Derived::show())。

  • 调用该地址对应的函数(即Derived::show())。

虚表使得C++中的多态成为可能,允许在运行时根据对象的实际类型调用适当的函数。


http://www.ppmy.cn/server/15305.html

相关文章

Debian常用命令

Debian常用命令 引言 Debian是一个广受欢迎的Linux发行版&#xff0c;以其稳定性、安全性和丰富的软件资源库而著称。对于系统管理员和开发者来说&#xff0c;熟悉Debian的常用命令是进行有效管理和开发工作的基础。本文将介绍一些在Debian系统中常用的命令&#xff0c;帮助读…

Linux 安装 nvm,并使用 Jenkins 打包前端

文章目录 nvm是什么nvm下载nvm安装设置 nvm 环境变量设置 Jenkins 打包命令 nvm是什么 nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过它可以安装…

conda出现http429报错:CondaHTTPError: HTTP 429 TOO MANY REQUESTS for url <xxx>

我的报错信息如下&#xff1a; CondaHTTPError: HTTP 429 TOO MANY REQUESTS for url <https://mirrors.ustc.edu.cn/anaconda/pkgs/main/linux-64/current_repodata.json> Elapsed: 00:46.305607An HTTP error occurred when trying to retrieve this URL. HTTP errors…

李沐63_束搜索——自学笔记

贪心搜索 1.在seq2seq中使用贪心搜索来预测序列&#xff1a;将当前时刻预测概率最大的词输出 2.贪心可能不是最优解&#xff08;步步最优不代表全局最优&#xff09; 穷举搜索 1.最优算法&#xff1a;对所有可能的序列&#xff0c;计算它的概率&#xff0c;选取最好的那个 …

水位监测识别摄像机

水位监测识别摄像机是一种利用人工智能技术进行水位监测的智能设备&#xff0c;其作用是监测水体的水位变化并识别潜在的水灾危险&#xff0c;以提供准确数据和及时预警&#xff0c;帮助保护人民生命财产安全。这种摄像机通过高清摄像头实时捕捉水体的图像&#xff0c;然后利用…

React fiber框架

fiber&#xff1a;是一种新的框架&#xff0c;他的目的是实现增量式&#xff0c;可中断的虚拟Dom diff的过程。 作用&#xff1a;提高react性能优化和响应速度 出现原因&#xff1a;diff算法是递归出来的&#xff0c;一次就得全渲染完&#xff0c;而fiber的出现就是解决这个问…

前端开发禁用F12和右键检查元素处理

只需要对应的页面引入西面这个js文件就行(创建一个.js文件,将下面代码粘贴进去页面引用后使用) window.onload function () {document.onkeydown function () {var e window.event || arguments[0];//屏蔽F12if (e.keyCode 123) {return false;//屏蔽CtrlShiftI} else if …

Qt实现XYModem协议(八)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…