Když chce člověk proniknout trochu víc do té implementace OOP v C++ (při čtení článku mě vždycky napadne spousta krajních případů, na které tam nenajdu odpověď), tak se hodí následující přepínače kompilátorů:
Kód: Vybrat vše
cl.exe /d1reportAllClassLayout test.cpp
pro MS Visual C++. Stačí v menu Start vybrat něco jako Visual Studio -> Tools -> Command Prompt a spustí se příkazová řádka s upraveným PATH tak, že cl.exe a další programy jako csc.exe lze používat bez plné cesty.
Pro gcc by to měl být přepínač
ale netestoval jsem ho.
Výstup vypadá v případě Visual C++ takhle:
Kód: Vybrat vše
class Worker size(16):
+---
0 | {vbptr} /* virtual base pointer - poznámka ta v tom výstupu není */
4 | b
+---
+--- (virtual base Employee)
8 | {vfptr} /* virtual table pointer - poznámka ta v tom výstupu není */
12 | a
+---
Zdrojem je stackoverflow
Když chce člověk proniknout trochu víc do té implementace OOP v C++ (při čtení článku mě vždycky napadne spousta krajních případů, na které tam nenajdu odpověď), tak se hodí následující přepínače kompilátorů:
[code]cl.exe /d1reportAllClassLayout test.cpp [/code]
pro MS Visual C++. Stačí v menu Start vybrat něco jako Visual Studio -> Tools -> Command Prompt a spustí se příkazová řádka s upraveným PATH tak, že cl.exe a další programy jako csc.exe lze používat bez plné cesty.
Pro gcc by to měl být přepínač
[code] -fdump-class-hierarchy[/code]
ale netestoval jsem ho.
Výstup vypadá v případě Visual C++ takhle:
[code]
class Worker size(16):
+---
0 | {vbptr} /* virtual base pointer - poznámka ta v tom výstupu není */
4 | b
+---
+--- (virtual base Employee)
8 | {vfptr} /* virtual table pointer - poznámka ta v tom výstupu není */
12 | a
+---
[/code]
Zdrojem je stackoverflow :-)