MSVC上的虚拟表格布局 - 哪里是类型信息?

use*_*112 3 c++ polymorphism virtual-functions vtable

我有以下C++代码说明虚拟方法:

class X{
    O a;
    H b;
    virtual void c() = 0;
    virtual void d() = 0;
};

class Y : public X{
    virtual void c();
    virtual void d();
};
Run Code Online (Sandbox Code Playgroud)

在MSVC上输出以下vtable布局:

1>  class X size(24):
1>      +---
1>   0  | {vfptr}
1>   8  | a
1>  16  | b
1>      +---
1>  
1>  X::$vftable@:
1>      | &X_meta
1>      |  0
1>   0  | &X::c
1>   1  | &X::d
1>  
1>  X::c this adjustor: 0
1>  X::d this adjustor: 0
1>  
1>  
1>  class Y size(24):
1>      +---
1>      | +--- (base class X)
1>   0  | | {vfptr}
1>   8  | | a
1>  16  | | b
1>      | +---
1>      +---
1>  
1>  Y::$vftable@:
1>      | &Y_meta
1>      |  0
1>   0  | &Y::c
1>   1  | &Y::d
1>  
1>  Y::c this adjustor: 0
1>  Y::d this adjustor: 0
1>  
1>  
Run Code Online (Sandbox Code Playgroud)

阅读内部C++对象模型后,我想知道上面的vtable布局中的类型信息在哪里?

在书中(我认为他们使用GCC vtable布局),类型信息将在vtable的第0个元素中.对于MSVC而言,这不是一个虚拟函数 - 所以存储的类型信息在哪里?那是什么"_meta"

Mik*_*our 5

这就是"_meta"是什么?

是.除了多态元数据之外,您认为这意味着什么?