什么是vtable锚定,以及它如何在共享对象中工作?

时间:2016-01-21 00:19:34

标签: c++ vtable shared-objects

我正在研究C ++库的一些问题,并确保应用程序和共享对象之间的类型信息是一致的。我也有兴趣确保 EqualObject 比较工作,这意味着我确实拥有相同的对象,而不是两个在 operator==

This answer声明在标题中锚定vtable。我对这项技术并不熟悉。或者我听说过另一个名字。

什么是vtable锚定,它是如何工作的?

我也知道GCC FAQ中的dynamic_cast, throw, typeid don't work with shared libraries

1 个答案:

答案 0 :(得分:1)

这是非标准技术,但问题很明确:哪个翻译单元应该包含vtable?如果没有内联虚拟析构函数,它只在一个翻译单元中定义,并且将vtable放在那里是一个简单的选择。

对于便携式代码,这非常无关紧要。你不会关心重复的vtable。