Deklarace metod uvnitř objektu se provádí tak, že se nejprve uvede klíčové slovo procedure, function, constructor nebo destructor, za klíčovým slovem se uvede název metody a v kulatých závorkách seznam parametrů s určením jejich typu.
Metodu constructor musí obsahovat každý objekt, který obsahuje nebo dědí virtuální metody. Metodou constructor se musí před voláním libovolné virtuální metody inicializovat instance objektu, který obsahuje virtuální metody. Konstruktor nemůže být metodou virtuální. Úkolem konstruktoru je doplnit adresy virtuálních metod objektu do tabulky virtuálních metod (VMT). Tento proces nazýváme inicializací objektu, který má ve své definici virtuální metodu.
Metodu destructor musí obsahovat každý dynamický objekt obsahující virtuální metody. Metodou destructor se z paměti uvolní veškerá paměť, kterou dynamický objekt využívá. Skutečná velikost okupované paměti se určí na základě hodnot uložených v tabulce virtuálních metod. Destruktor může být metodou virtuální.
Předefinování metody objektu – v definici libovolného typu potomka můžeme předefinovat kteroukoli metodu děděnou po typu předka. Metoda se musí uvést stejným jménem, jak ji definuje typ předka. Nově definovaná metoda potom platí v nově definovaném objektu, který metodu předefinoval a u všech jeho potomků, dokud ji některý z potomků znovu nepředefinuje.
Předefinování statické metody – použije se hlavička se stejným jménem, ale nemusí být zachovány parametry.
Předefinování virtuální a dynamické metody – metoda musí mít přesně stejnou hlavičku včetně počtu, typu a pořadí a jmen parametrů. Pokud je virtuální metoda funkcí, musí se zachovat typ výsledku funkce. Nově definovaná metoda musí být rovněž metodou virtuální.
Žádné komentáře:
Okomentovat