Při hledání konstruktorů jsem vycházel z RTTI_TypeDescriptor
struktury, která obsahuje název třídy.
Pomocí referencí jsem dohledal Complete_object_locator
a následně i VMT.
Konstruktory jsou ve všech případech inline spolu s voláním konstrukoru nadtřídy (opět pokaždé CUnknown
).
Jako adresu konstruktoru jsem označil adresu funkce, ve které probíhá inicializace proměnných a přiřazení obou VMT (vlastní a nadtřídy).
Kromě těchto označených konstruktorů se pro každou třídu přidává VMT ještě v rámci jiných funkcí, tyto funkce jsou ale členské funkce těchto tříd a na první pohled mají jinou strukturu a spíše nepřipomínají konstruktory. Při porovnávání konstruktorů je navíc podezřelé, že každý inicializuje jiný počet členských proměnných. V rámci těchto funkcí navíc dochází k uvolňování paměti z čehož lze usuzovat, že toto volání není standardním konstruktorem ale spíše destruktorem.
Pro třídy začínající prefixem I
se mi nepodařilo dohledat Complete_object_locator
a tím pádem ani VMT, z toho důvodu jsem označil jejich počet virtuálních metod jako nulový.
-
✓ Konstruktory, přiřazení VMT
-
✓ Počet virtuálních metod každé třídy
-
✓ Názvy tříd, přiřazení VMT třídám
-
✓ Hierarchie tříd
-
❏ (Bonus) Počet životů je 1000
VMT | Complete Object Locator | Type Descriptor | Base Classes | |
---|---|---|---|---|
CUnknown |
|
|
|
|
CZizala |
|
|
|
|
IZizala |
N/A |
N/A |
|
|
CZizalaApp |
|
|
|
|
IZizalaApp |
N/A |
N/A |
|
|
CZizaliWindow |
|
|
|
|
IZizaliWindow |
N/A |
N/A |
|
|
CObrazovka |
|
|
|
|
IObrazovka |
N/A |
N/A |
|
|
Třída | Počet virtuálních metod |
---|---|
CUnknown |
4 |
CZizala |
14 |
IZizala |
0 |
CZizalaApp |
17 |
IZizalaApp |
0 |
CZizaliWindow |
6 |
IZizaliWindow |
0 |
CObrazovka |
10 |
IObrazovka |
0 |
Třída | Adresa konstruktoru | Přiřazení VMT |
---|---|---|
CZizala |
|
|
CZizalaApp |
|
|
CZizaliWindow |
|
|
CObrazovka |
|
|