Klíčová slova dědičnosti
Specifické pro Microsoft
class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;
kde:
- název třídy
Název deklarované třídy.
Jazyk C++ umožňuje deklarovat ukazatel na člen třídy před definicí třídy.Příklad:
class S;
int S::*p;
Ve výše uvedeném kódu je p deklarován jako ukazatel na celočíselný člen třídy S.Nicméně class S nebyla v tomto kódu dosud definována. Je pouze deklarována.Když kompilátor na takový ukazatel narazí, musí vytvořit obecné rozlišení ukazatele.Velikost rozlišení je závislé na zadaném modelu dědičnosti.Pro určení modelu dědičnosti existují čtyři způsoby:
V integrovaném vývojovém prostředí IDE pod Rozlišení člena na ukazatel
Pomocí přepínače příkazového řádku /vmg
Pomocí direktivy pragma pointers_to_members
Pomocí klíčových slov dědičnosti __single_inheritance, __multiple_inheritance a __virtual_inheritance.Tento postup řídí model dědičnosti na základě každé třídy.
[!POZNÁMKA]
Je-li vždy pro člena třídy po definování třídy definován ukazatel, není třeba použít žádnou z těchto možností.
Deklarování ukazatele na člen třídy před definicí třídy ovlivňuje velikost a rychlost výsledného spustitelného souboru.Čím složitější dědičnost třída používá, tím větší je počet bajtů potřebných k zastoupení ukazatele na člen třídy a tím větší je kód potřebný k interpretaci ukazatele.Jednoduchá dědičnost je nejméně náročná a virtuální dědičnost je nejsložitější.
Je-li výše uvedený příklad změněn na:
class __single_inheritance S;
int S::*p;
bez ohledu na možnosti příkazového řádku nebo direktivy pragma, odkazy na členy class S budou používat nejmenší možnou reprezentaci.
[!POZNÁMKA]
Stejná dopředná deklarace třídy reprezentace ukazatele na člena by se měla objevit v každé jednotce překladu, která deklaruje ukazatele na členy této třídy a deklarace by se měla objevit před deklarací ukazatelů na členy.
Specificka produktu Microsoft END