13得票3回答
将一个派生的C++类声明为"final",会改变ABI吗?

我想知道,将现有的派生C++类标记为final以允许进行非虚函数化优化,是否会在使用C ++ 11时改变ABI。我的预期是它不应该产生任何影响,因为我认为这主要是对编译器有关如何优化虚函数的提示。因此我看不出它会改变结构体或虚函数表的大小,但也许我漏掉了什么? 我知道这会改变API,因此进一...

13得票6回答
C++程序中的虚拟表数量和虚拟指针

假设我们有以下程序:class A { public: virtual fun(){}; }; class B:public A { public: virtual fun(){}; }; int main() { A a1; B b1...

13得票2回答
如何通过GCC显示C++类的VTABLE?

我了解到,如果一个类至少包含一个虚函数,它将拥有一个VTABLE。 我想查看VTABLE的内容。 是否有一种方法可以显示它? 具体来说,在gcc中是否有一种选项可以显示一个类的VTABLE?

12得票4回答
如何确定带有虚函数的类的大小?

这是一个作业问题。对于以下代码:#include <iostream> using namespace std; class A { public: virtual void f(){} }; class B { public: virtual void f2(...

12得票2回答
解密vtable转储

我正在使用 C++ 中的虚拟继承,并想知道类对象是如何布局的。 我有以下三个类:class A { private: int a; public: A() {this->a = 47;} virtual void setInt(int x) {this->a...

12得票4回答
如何在导出C++类的DLL中使用延迟加载

我有一个DLL one.dll,它使用从two.dll导出的TwoClass类,通过class __declspec(dllexport)。 我想让one.dll使用/delayload来加载two.dll,但是我得到了链接错误:LINK : fatal error LNK1194: cann...

12得票2回答
C++中多态类中的虚函数表(vtable)使用gdb

如何使用指向基类对象的指针显示vtable,并且该对象具有虚函数?

12得票4回答
C++:一个虚函数表是否包含指向非虚函数的指针?

vtable(虚函数表)包含指向该类的虚函数的指针。它是否还包含指向非虚函数的指针呢? 谢谢!

11得票1回答
为什么虚表会有大小为sizeof(void*) * 2字节的0x00填充?

我想这取决于具体的实现,但对于使用libstdc++和libc++(gcc或clang)的armv7、arm64和x86_64构建,似乎虚函数表始终在开头有8个字节(64位系统上为16个字节)的填充,获取虚函数表通常是这样的:ldr.w r0, <address of vtable&gt...

11得票2回答
C++中的虚函数表:是语言的一部分还是与编译器相关?

虚函数表(virtual method table)是C++规范的一部分,还是由编译器解决虚函数查找? 如果它是规范的一部分:为什么? 我猜这取决于编译器,但有人告诉我它是规范的一部分。 欢迎提供参考资料!