It is possible to print the class layout in Visual C++ using the following command option:
/d1reportSingleClassLayoutCLASSNAME
Where CLASSNAME is the name of the class you want to print.
The option can be added at the "Command Line" "Additional Options"
Sample:
```cpp
struct Base
{
int baseInt;
virtual void f(){};
virtual ~Base(){}
};
struct D1 : public Base { int D1Int; virtual void f1(){}; virtual ~D1(){} };
struct D2 : public Base { int D2Int; virtual void f2(){}; virtual ~D2(){} };
struct D3 : public D1, public D2
{
int D3Int;
virtual void f(){};
};
```
/d1reportSingleClassLayoutD3
Output:
class D3 size(28):
+---
| +--- (base class D1)
| | +--- (base class Base)
0 | | | {vfptr}
4 | | | baseInt
| | +---
8 | | D1Int
| +---
| +--- (base class D2)
| | +--- (base class Base)
12 | | | {vfptr}
16 | | | baseInt
| | +---
20 | | D2Int
| +---
24 | D3Int
+---
D3::$vftableD1:
| &D3_meta
| 0
0 | &D3::f
1 | &D3::{dtor}
2 | &D1::f1
D3::$vftableD2:
| -12
0 | &thunk: this-=12; goto D3::f
1 | &thunk: this-=12; goto D3::{dtor}
2 | &D2::f2
D3::f this adjustor: 0
D3::{dtor} this adjustor: 0
D3::__delDtor this adjustor: 0
D3::__vecDelDtor this adjustor: 0