For GCC compiler in Linux run:
g++ -fdump-class-hierarchy example.h
The output is:
Vtable for A
A::_ZTV1A: 3u entries
0 (int (*)(...))0
8 (int (*)(...))(& _ZTI1A)
16 (int (*)(...))A::doSomeWork
Class A
size=8 align=8
base size=8 base align=8
A (0x7fb76785a4e0) 0 nearly-empty
vptr=((& A::_ZTV1A) + 16u)
Vtable for B
B::_ZTV1B: 3u entries
0 (int (*)(...))0
8 (int (*)(...))(& _ZTI1B)
16 (int (*)(...))B::doSomeWork
Class B
size=8 align=8
base size=8 base align=8
B (0x7fb7678510d0) 0 nearly-empty
vptr=((& B::_ZTV1B) + 16u)
A (0x7fb76785a540) 0 nearly-empty
primary-for B (0x7fb7678510d0)
Also I've created the vtable-dumper tool to list contents of virtual tables in the shared objects. With this tool you don't need to compile headers, just run it on the object:
vtable-dumper SHLIB
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…