c++ - 虚函数表指针的大小是多少?

标签 c++ virtual-functions

在单继承中,指向虚表的指针的大小是否总是等于 void* 的大小?说,

class vft { virtual ~vft(); }
assert (sizeof(vft) == sizeof(void*));

这个断言总是正确的吗?

最佳答案

不,虚拟主义是实现定义的。它是一个编译器实现细节。
所以你不能说那永远是真的。

此外,您应该避免自己编写任何代码(如问题中的代码),这些代码假定标准将开放的细节作为编译器实现细节,因为这会使您的代码不能 100% 跨编译器移植并且可能甚至在某些编译器上会彻底失败。

关于c++ - 虚函数表指针的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096417/

相关文章:

c++ - 使用复制构造函数且存在虚函数时出现错误 "recursive on all control paths"

C++ 析构函数作为虚函数?

c++ - 从类模板实现纯虚函数 - 参数类型

c++ - 如何在 C++ 构造函数中获得多态行为?

c++ - 发现缺陷 c++ 代码

c++ - 如何在 OSX 上使用 glfw3 在 OpenGL 和 OpenCL 之间创建共享上下文?

c++ - 类继承 : Function is inaccessible

c++ - 将私有(private)参数中继到派生类虚拟方法

c++ - ctags 如何用宏解析类定义,用于 C++

c++ - 如何使用 pin 工具跟踪二进制检测中的特定循环?