强制虚拟方法表中函数的顺序?

2024-03-14

  1. 如何控制虚拟表中虚拟函数的顺序?它们的排列顺序是否与声明的顺序相同?

  2. 当继承带有虚表的类时,继承类的虚表是基类的扩展,还是仅用继承类的虚函数创建的全新虚表。 (即虚拟表仍然位于类的索引 +0x0 处吗?)


  1. (a) 就标准而言,你不能,(事实上你甚至不能假设 vtable 存在)。 (b) 可能吧,但是什么情况下你需要控制订单,但你自己无法检查?检查的方法是查看虚拟调用的反汇编(并找到添加到 vtable 指针的偏移量以获取调用地址)或查看 vtable 本身的反汇编。

  2. 依靠。对于单一继承,可能是基类的扩展,每个对象的索引 0 指向该类的虚拟表,并带有指向基类中声明的每个虚拟函数的正确实现(可能是覆盖)的指针,然后是指向派生类中声明的每个虚函数的指针。对于多重继承和虚拟继承来说,事情没有(不可能)那么简单。每个对象将包含多个指针,要么指向 vtable,要么指向包含 vtable 和其他类信息的结构,并且当您围绕类层次结构进行转换时,对象的指针值会发生变化。尝试一下看看。

所有这一切都是为了一个非常假设的“典型实现”。编译器编写者有他们的技巧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制虚拟方法表中函数的顺序? 的相关文章

  • 部分渲染冗余方法调用

    我知道 JSF 可能会调用托管 bean 方法几次 即使它在 xhtml 中只调用一次 我知道这是由于编码 方法造成的 我想请您向我解释一下以下案例 我有一个类似这样的 JSF 文件
  • Windows 上任何单个进程可以寻址的最大内存量

    Windows 版本的内存限制 http msdn microsoft com en us library windows desktop aa366778 28v vs 85 29 aspx回答 Windows 上任何单个进程可以寻址的最
  • 如何使用C#检测IIS版本?

    如何使用C 检测IIS版本 更新 我的意思是来自 winapp 实际上该场景是开发一个自定义安装程序 想要检查已安装 IIS 的版本以调用适当的 api 在这里找到了答案 链接文本 http forums iis net p 1162404
  • 在主窗体上使用 BeginInvoke 调用的网络任务未执行

    我使用 Visual Studio 2013 构建了一个具有单个表单的 C 应用程序 并且该应用程序有两个更新屏幕的例程 更新屏幕的例程需要在主线程上运行 因此我自己的线程 不与屏幕交互 在需要更新时调用主窗体上的 BeginInvoke
  • 如何吞咽……有具体原因的异常

    在这个方法中 public static void Detach try using var master new DataContext Data Source LocalDB MSSQLLocalDB Initial Catalog m
  • C# 字典循环增强

    我有一本包含大约 100 万个条目的字典 我不断地循环字典 public void DoAllJobs foreach KeyValuePair
  • 与智能指针的返回类型协方差

    在 C 中我们可以这样做 struct Base virtual Base Clone const virtual Base struct Derived Base virtual Derived Clone const overrides
  • 同步和异步 API

    我正在开发一个库 它提供一些耗时的服务 我需要每个 API 有两个版本 一个用于同步函数调用 另一个用于异步 图书馆用户应决定使用哪个版本 服务结果可能对于系统继续运行 同步调用 至关重要 可能需要在不同的工作线程中完成相同的操作 因为结果
  • 再次对存储库和持久性一无所知

    这就是我要做的 我有一个通用的存储库类Repository
  • 如何保存具有多个缩进设置的XmlDocument?

    我需要保存一个XmlDocument以适当的缩进归档 Formatting Indented 但有些节点及其子节点必须排在一行 Formatting None 从那时起如何实现这一目标XmlTextWriter接受整个文档的设置 在 Ahm
  • 为什么不能使用 C# 对象初始值设定项语法调用方法? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 重复取消引用多个指针,效率较低?

    而不是写 string name first gt next gt next gt next gt name int age first gt next gt next gt next gt age 将其写为 node billy bloc
  • Compact Framework 3.5 上的 System.Data.SQLite 问题

    我在我的紧凑框架应用程序中使用 sqlite 来记录系统中的事件 我也在使用系统 数据 SQLite http sqlite phxsoftware com 该事件具有描述其发生时间的时间戳 我将此时间戳记作为刻度存储在我的表中 除此列外
  • C++ 标准是否保证未使用的私有字段会影响 sizeof?

    考虑以下结构 class Foo int a 在 g 中测试 我明白了sizeof Foo 4但这是由标准保证的吗 是否允许编译器注意到a是一个未使用的私有字段并将其从类的内存表示中删除 导致更小的 sizeof 我不希望任何编译器真正进行
  • 企业库 CacheFactory.GetCacheManager 抛出空引用

    我正在尝试将使用 1 1 版本的企业库缓存块的应用程序转换为 2 0 版本 我认为我真正遇到的问题是不同 EntLib 部分的配置被分成几个文件 显然 这曾经是由ConfigurationManager 部分处理程序 但现在已经过时 取而代
  • ASP.NET MVC C#:将多个表/查询中的数据引入视图中

    好吧 我仍在掌握 ASP NET 和 MVC 框架的窍门 并将我的知识从经典的 ASP 和 VB 转换过来 所以请保持温柔 我的第一个视图 home details X 运行良好感谢之前的帮助为我指明了正确的方向 https stackov
  • HTTP 错误 500.35 - ANCM 同一进程中的多个进程内应用程序 ASP.NET Core 3

    从今天早上开始 没有对项目代码进行任何更改 一个非常简单的 Web API 一个控制器和 3 个方法 使用 Swagger 它不再启动 我收到错误 HTTP 错误 500 35 ANCM 同一进程中有多个进程内应用程序 事件查看器报告最无用
  • 实现“计时器”的最佳方法是什么? [复制]

    这个问题在这里已经有答案了 实现计时器的最佳方法是什么 代码示例会很棒 对于这个问题 最佳 被定义为最可靠 失火次数最少 和最精确 如果我指定 15 秒的间隔 我希望每 15 秒调用一次目标方法 而不是每 10 20 秒调用一次 另一方面
  • JSON.NET 序列化 JObject,同时忽略 null 属性

    我有一个JObject它被用作template用于调用 RESTful Web 服务 这JObject通过解析器创建 并且由于它用作模板告诉用户端点架构是什么样子 所以我必须找到一种方法来保留所有属性 这就是为什么我将它们的值默认为null
  • 通过网络共享的 SQL CE

    我之前见过这个问题 但找不到关于什么是可能 不可能以及什么解决方法可能可用的明确解释 我有一个现有的 C 应用程序 它使用 SQL CE 来存储本地信息 该数据库只能由单个应用程序访问 并存储在用户的 appdata 文件夹中 某些环境将

随机推荐

  • Scala 中方差和可变性/不变性之间的关系

    我正在研究 Scala 中的集合 发现可变集合被定义为不变集合 不可变集合被定义为协变集合 Scala 中的方差和可变性 不变性之间有什么关系 class Array T class List T 我在 SIA 找到了一个简单的解释 以下是
  • WPF:如何以编程方式提供键盘焦点位于列表框中的视觉反馈?

    我正在编写一个带有允许多项选择的列表框的应用程序 SelectionMode Multiple lisbox 中的项目是食谱的成分 不幸的是 单击列表框项目会选择该项目 这可能是不需要的 我想要以下场景 用户单击列表框以选择列表框 列表框本
  • 如何从接口获取物理接口IP地址

    到目前为止我使用 PyQt 类所做的事情 all Addresses QNetworkInterface allAddresses list of QHostAddress for addr in all Addresses print a
  • 将 protobuf3 与一些依赖于 Java 中的 protobuf2 的库一起使用

    我使用protobuf3来表示我们的数据 虽然我们需要hbase来存储数据 但似乎hbase依赖于protobuf2 当我编写以下行来创建 hbase 表时 admin createTable desc 然后我得到一个例外 NoClassD
  • Iframe 内的 Jquery

    长时间潜伏在 stackoverflow 中 只是尝试使用 iframe 和 jquery 进行一些操作 但我无法找到答案 我在主页中有 jquery 位置 但不在框架内 在我的 iframe 中我有通常的 document jquery
  • 如何在JS函数中调用AngularJS函数

    这是与 angularjs 的第一次交互 这是第一次 我如何调用该函数并获取另一个控制器中的项目 我正在使用 AngularJS 加载 CSV 文件 var Mymodule angular module Mymodule Mymodule
  • microk8s拉取镜像,卡在ContainerCreating状态

    如中所述doc https microk8s io docs working based on https stackoverflow com questions 55549522 how to configure kubernetes m
  • 是否可以给 bootstrap btn 5 分?

    I m looking to make a bootstrap btn look a little differently with there being a 5 point at the bottom of its base I kno
  • 如何在调试java程序时执行eclipse中的某些功能?

    就像用于调试 javascript 的 firebug 一样 eclipse有这样的功能吗 或者我需要一个插件吗 使用 显示 视图 或者更快一些 突出显示要运行的代码 然后右键单击 执行或 Ctrl U
  • 在 Doctest 中使用 Mock?

    我正在使用文档测试 我想知道对执行外部操作 例如发送电子邮件 连接到服务器等 的函数进行文档测试的正确方法是什么 使用 Mock 似乎是答案 但它会使函数的文档字符串变得混乱 例如 class SSHConnection BaseConne
  • 页面刷新 Chrome 后不会触发 Beforeunload 事件

    我有这个简单的代码
  • MySQL 搜索和替换语法错误

    我有以下查询并收到以下错误消息 update wp posts set post excerpt replace post excerpt av font icon icon ue82d font entypo fontello size
  • 如何将 UISearchController 与 SwiftUI 集成

    我有一个符合 UIViewControllerRepresentable 的 SearchController 并且我已经实现了所需的协议方法 但是 当我在 SwiftUI 结构中创建 SearchController 的实例时 加载后 S
  • 如何通过Python使用MySQL的AES_DECRYPT()实现

    我正在尝试编写一个具有相同功能的Python代码AES ENCRYPT and AES DECRYPTMySQL 的 https dev mysql com doc refman 5 6 ja encryption functions ht
  • Swift 4 从错误中获取错误代码

    我有一个定义为错误的变量 这就是我打印它时的样子 Optional Error Domain com apple LocalAuthentication Code 2 Canceled by user UserInfo NSLocalize
  • iOS 模拟器权限被拒绝并且不显示权限警报对话框

    我正在开发 iOS 模拟器 并且面临请求权限的问题 我的应用程序运行正常 可以访问照片库 相机和位置服务 但是安装新的 XCode 8 1 后 我在模拟器上运行该应用程序 该应用程序不再允许使用照片库或相机或位置服务 我尝试以编程方式请求权
  • 将文件路径拖放到 Java Swing JTextField

    Using 这个问题 https stackoverflow com questions 811248 how can i use drag and drop in swing to get file path 我创建了下面的类 它处理将文
  • 将图片读取为灰度numpy数组,并保存回来

    我尝试了以下操作 希望看到源图像的灰度版本 from PIL import Image import numpy as np img Image open img png convert L arr np array img getdata
  • Server.Transfer() 对比服务器.执行()

    我对调用页面 第一页 和调用者页面 新页面 的请求哪个更好或效果感到困惑 我注意到在这两种情况下 浏览器中的 URL 仍然是首页 URL 不会刷新到新页面 URL 因为浏览器没有被请求这样做 任何值得注意的评论 原文位于 Server Tr
  • 强制虚拟方法表中函数的顺序?

    如何控制虚拟表中虚拟函数的顺序 它们的排列顺序是否与声明的顺序相同 当继承带有虚表的类时 继承类的虚表是基类的扩展 还是仅用继承类的虚函数创建的全新虚表 即虚拟表仍然位于类的索引 0x0 处吗 a 就标准而言 你不能 事实上你甚至不能假设