抽象类 C++ 的 VTABLE [重复]

2024-01-12

可能的重复:
抽象类有VTABLE吗? https://stackoverflow.com/questions/2592438/does-an-abstact-classes-have-a-vtable

是否为具有纯虚函数和虚函数的抽象类创建虚函数表?

class Abstarct {
public:
   virtual void f() = 0;
   virtual void g() {}
};

Thanks.


我刚刚看到其他主题中的答案都没有清楚地回答这个问题。

答案是:是和否。

由于 vtable 和 vptr 是实现定义的概念,并且不是 C++ 标准强制要求的,因此编译器可以自由选择任何方法,只要它能够动态调度 vtable 和 vptrvirtual功能 (pure或其他)。

因此,对于实现 vtable 和 vptr 的编译器,答案是“是”(或者最有可能是“是”),而对于其他不实现 vtable 和 vptr 而是以其他方式实现动态调度的编译器,答案显然是否定的。

请参阅此主题:

除了vtable之外,C++虚函数还能如何实现? https://stackoverflow.com/questions/5417829/how-can-c-virtual-functions-be-implemented-except-vtable

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

抽象类 C++ 的 VTABLE [重复] 的相关文章

随机推荐

  • 将数据发送到 Google Cloud ML 自定义预测例程时出现未知错误

    我正在尝试在 AI Platform 上编写自定义 ML 预测例程 以从客户端获取文本数据 进行一些自定义预处理 将其传递到模型中 然后运行模型 我能够成功地将这段代码打包并部署到谷歌云上 但是 每次我尝试从 node js 向它发送请求时
  • 在 CVS 中移动文件而不重置修订号

    最近我一直在源代码树中移动源文件 例如 将一堆文件放入一个公共程序集中 我一直在这样做 从 CVS 中删除文件 然后将其再次添加到新位置 问题是文件的修订号重置回 1 1 有没有一些简单的方法可以在不重置号码的情况下移动物品 我可能应该提到
  • 将 ConstraintLayout 中的所有子宽度与最宽子宽度匹配,宽度 = 换行内容

    ConstraintLayout 功能强大 但有时也很棘手 我想实现一个布局ConstraintLayout这可以很容易地实现LinearLayout 蓝色区域是父constraintLayout 红色部分是LinearLayout 我想通
  • 如何从 R 发送电子邮件

    我想从 R 发送电子邮件 这是我到目前为止所拥有的 library sendmailR from lt email protected cdn cgi l email protection to lt email protected cdn
  • 在 R 中处理非常大的数据集

    我正在处理一个非常大的数据集 我正在从 Oracle 数据库下载该数据集 数据框大约有 2100 万行和 15 列 我的操作系统是 windows xp 32 位 我有 2GB RAM 短期内我无法升级我的内存或操作系统 它正在工作 我需要
  • 根据条件向数据框中添加新行 python pandas

    需要根据条件向数据帧添加新行 当前数据框 在此数据框中有 4 列 我想做的就是检查 时间 列 检查每个夜班午夜 12 点的最接近值 并添加两个新行作为 11 59 59 和 00 00 01与最近的数据点相同的值 例如 03 01 晚的最接
  • WebSocket - 发送第二条消息后,我得到:服务器不得屏蔽它发送到客户端的任何帧

    我成功收到第一条消息 但第二条 相同的消息 我收到错误 服务器不得屏蔽发送给客户端的任何帧 它只有一个客户 private void RunWebSocketListener int websocket port 8996 TcpListe
  • IntelliJ IDEA - Android JDK 不起作用

    我刚刚安装了 IntelliJ IDEA 10 0 0 2 社区版我已经安装了 Android SDK C Program Files Android android sdk windows 我想创建一个新的android项目 所以我创建一
  • WPF 在 XAML 继承类中使用 override 属性

    我有一个小问题 找不到任何解决方案 也许这是 Visual Studio 中的问题 我创建了一个从 Image 继承的新类 然后我重写 Source 属性 class GifImage Image public new ImageSourc
  • 更新属性文件中的属性值而不删除其他值[重复]

    这个问题在这里已经有答案了 内容First properties name elango country india phone 12345 我要变化country from india to america 这是我的代码 import j
  • 如何真正理解 robocopy 返回码 2

    我正在努力解决如何处理有时会返回 2 的部署脚本robocopy 命令和输出如下 它返回 2 这意味着 额外文件 总体而言 这似乎是成功的 我应该接受 2 作为成功吗 ROBOCOPY Robust File Copy for Window
  • MySQL DELETE 查询的解释

    有没有办法解释DELETE使用 MySQL 进行查询 就像我们可以解释的那样SELECT query 从 MySQL 5 6 3 开始 EXPLAIN 提供有关 SELECT DELETE INSERT REPLACE 和 UPDATE 语
  • UINavigationBar 的自定义高度或 UINavigationBar 的替代方案

    我有一个带有导航栏的 viewController 我想增加导航栏的高度 但我不能 我已经搜索过增加导航栏的高度 但没有取得任何成功 是否有任何增加导航栏或任何其他库 替代方案的高度 不允许直接更改 It is not permissibl
  • Android Widget 位图尺寸

    Hallo 我正在编写一个小部件 但不确定使用什么大小的位图作为每个屏幕分辨率 密度的背景 根据Android 开发者应用程序小部件 http developer android com guide topics appwidgets in
  • 如何配置系统以使用 FIWARE yum 存储库?

    我知道 FI WARE 提供了一个公共 yum 存储库 位于http repositories testbed fiware org http repositories testbed fiware org 可用于安装 FI WARE 软件
  • ImportError:无法从“collections”导入名称“MutableMapping”(/usr/local/lib/python3.10/collections/__init__.py)

    我正在 vs code 中运行这个简单的 Flask 应用程序 将其 Docker 化并加载到 ECS 任务正在退出并出现以下错误 ImportError 无法从 集合 usr local lib python3 10 collection
  • 基于 paxos 的复制键值存储的领导者选举

    我将使用多个 Paxos 实现一个键值存储 我会有几个节点 其中一个是主节点 该主节点接收更新请求并将值复制到从节点 我的问题是如何选择主节点 或领导者 我还可以使用Paxos算法吗 如果是这样 您认为有必要将paxos实现抽象为一个单元
  • Pyomo:限制迭代次数

    我有一个 Pyomo 模型 最终得到这样的解决 solver SolverFactory ipopt results solver solve model tee False 该模型当前运行了 3000 次迭代才放弃 在我看来 必须有一种方
  • 如何以编程方式限制我的 C# 应用程序的带宽使用?

    我这里有一个备份应用程序 它连接到各种网络服务并从 ftp 或 http 服务器下载 上传文件 限制应用程序带宽使用的最简单方法是什么 我需要这样做 因为应用程序一旦安装并运行就会减慢所有办公室人员的互联网访问速度 这最终会让我陷入地狱 因
  • 抽象类 C++ 的 VTABLE [重复]

    这个问题在这里已经有答案了 可能的重复 抽象类有VTABLE吗 https stackoverflow com questions 2592438 does an abstact classes have a vtable 是否为具有纯虚函