作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个继承自 B 类和 C 类的 A 类(多重继承)。A 类有多少 vtable 成员?单继承是什么情况?
此外,假设:
Class A : Public B {}
和:
B* test = new A();
test
从哪里得到它的 vtable?任务是什么?我假设它获得了 B
的 A
的 vtable 的一部分,但是 A
的构造函数是否改变了它的父亲(B
) vtable 也是?
最佳答案
首先,vtable 是特定于实现的。事实上,标准中没有任何地方规定 vtable 必须存在。
无论如何,在大多数情况下,每个基类都有一个带有虚函数的虚表指针。而且,正如 Yuval 解释的那样,在构造对象时没有人“填充” vtable;每个类都有一个带有虚函数的虚表,对象只有指向其正确虚表(或虚表,在多重继承的情况下)的指针。在您的单继承示例中,test
将有一个指向 A
的 vtable 的指针,假设 A
至少有一个虚函数(继承来自 B
或在 A
中新声明)。
关于c++ - 虚函数——vtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797287/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!