gpt4 book ai didi

c++ - 虚函数——vtable

转载 作者:行者123 更新时间:2023-11-28 03:59:08 25 4
gpt4 key购买 nike

假设我有一个继承自 B 类和 C 类的 A 类(多重继承)。A 类有多少 vtable 成员?单继承是什么情况?

此外,假设:

Class A : Public B {}

和:

B* test = new A();

test 从哪里得到它的 vtable?任务是什么?我假设它获得了 BA 的 vtable 的一部分,但是 A 的构造函数是否改变了它的父亲(B) vtable 也是?

最佳答案

首先,vtable 是特定于实现的。事实上,标准中没有任何地方规定 vtable 必须存在。

无论如何,在大多数情况下,每个基类都有一个带有虚函数的虚表指针。而且,正如 Yuval 解释的那样,在构造对象时没有人“填充” vtable;每个类都有一个带有虚函数的虚表,对象只有指向其正确虚表(或虚表,在多重继承的情况下)的指针。在您的单继承示例中,test 将有一个指向 A 的 vtable 的指针,假设 A 至少有一个虚函数(继承来自 B 或在 A 中新声明)。

关于c++ - 虚函数——vtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com