虚函数表指针的大小是多少?
在单继承中,指向虚拟表的指针的大小是否始终等于 void*
的大小?你说,
class vft { virtual ~vft(); }
assert (sizeof(vft) == sizeof(void*));
这个断言总是正确的吗?
In single inheritances, is the size of a pointer to virtual table always equal to the size of a void*
? Say,
class vft { virtual ~vft(); }
assert (sizeof(vft) == sizeof(void*));
Would that assertion always be true?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(5)
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
不,虚拟主义是由实现定义的。它是编译器实现细节。
所以你不能说这永远是真的。
另外,您应该避免编写任何假定标准保留的细节作为编译器实现细节的代码(例如问题中的代码),因为这会使您的代码不能 100% 跨编译器和可移植性。在某些编译器上甚至可能会严重失败。
No, Virtualism is implementation defined. It is an compiler implementation detail.
So you cannot say that will be true always.
Also, You should refrain yourself from writing any code(like the one in Question) that assumes an detail that is left open by the Standard as an compiler implementation detail, Because that makes your code not 100% portable across compilers & might even fail drastically on some compilers.