C++ 虚函数问题理解[虚函数指针位于内存哪里]

server/2024/10/25 5:34:57/

虚函数是我们在C++开发中最基本的多态中 常用的东西那么对于以下代码看看是否有哪些问题呢?

class Base {
public:virtual void foo() {printf("Base foo\n");}
};void overwriteVtable() {Base obj;memset(&obj, 0, sizeof(obj));  obj.foo();  
}

现在大家应该明白了吧 为什么不可以使用memset,在这个内存分布中,第一个就是虚函数表指针

这个指向虚函数表也就是 指向foo() 函数的

我们把虚函数表地址清空了,fool()虚函数肯定就找不到了,从而导致崩溃现象

这个问题是高级C++简单的一个知识点,希望对大家有所帮助,其实就是理解好C++虚函数表指针,虚函数,相关概念,大脑中形成有大概的一个内存分布图,指针,成员变量,等 是如何分布的

希望对大家有所帮助!!!!


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

相关文章

用Python将Office文档(Word、Excel、PowerPoint)批量转换为PDF

在处理不同格式的Office文档(如Word、Excel和PowerPoint)时,将其转换为PDF格式是常见的需求。这种转换不仅确保了文件在不同设备和操作系统间的一致性显示,而且有助于保护原始内容不被轻易修改,非常适合于正式报告、提…

初识jsp

学习本章节前建议先安装Tomcat web服务器:tomcat下载安装及配置教程_tomcat安装-CSDN博客 1、概念 我的第一个JSP程序: 在WEB-INF目录之外创建一个index.jsp文件,然后这个文件中没有任何内容。将上面的项目部署之后,启动服务器…

Java八股文-Mysql

Mysql: 1.Mysql数据库索引的类型有哪些? 普通索引唯一索引主键索引全文索引组合索引 2.主键索引,唯一索引区别: 唯一索引列允许空值,而主键列不允许空值 (MySQL 允许在唯一索引列中包含多个 NULL 值&am…

python-PyQt项目实战案例:制作一个视频播放器

文章目录 1. 关键问题描述2. 通过OpenCV读取视频/打开摄像头抓取视频3. 通过PyQt 中的 QTimer定时器实现视频播放4. PyQt 视频播放器实现代码参考文献 1. 关键问题描述 在前面的文章中已经分享了pyqt制作图像处理工具的文章,也知道pyqt通过使用label控件显示图像的…

RK3588开发笔记-麦克风阵列多pdm通道合并成一个声卡

目录 前言 一、RK3588音频架构概述 二、PDM简介 PDM基本原理 PDM的工作流程 PDM接口信号 三、原理图连接 四、设备树配置 五、设备调试 总结 前言 在音频设备的开发中,特别是在多通道音频数据处理场景中,如何将多个PDM(Pulse Density Modulation)通道整合成一个声卡…

DDD和DSSA

DDD(Domain-Driven Design)和DSSA(Domain-Specific Software Architecture)是两种与软件设计和架构相关的方法论。它们各自有不同的焦点和应用场景。下面是对它们的简要介绍和比较: 1. DDD(Domain-Driven Design) 定义:DDD是一种软件设计理念,旨在通过深刻理解业务领…

HTTP 请求的请求体是什么

HTTP 请求的请求体(request body)是指在 HTTP 请求中除了请求行(request line)、请求头(headers)之外的实际数据部分。请求体通常包含用于向服务器发送数据的信息,这些信息可以是表单数据、JSON 对象、XML 文档或其他任何形式的数据。 http请求一般包含的内容 HTTP(超…

【C++】——list 容器的解析与极致实现

人的一切痛苦,本质上都是对自己的无能的愤怒。 —— 王小波 目录 1、list 介绍 2、list的使用 2.1 list 的构造 2.2 iterator 的使用 2.3 list 的修改 2.4一些特殊接口 2.5 迭代器失效问题 3、实现list 3.1底层结构 结点类 list类 迭代器类 3.2功能接…