Co je to virtuální třída?

Virtuální třída je třída, která je přidělena pouze jednou v paměti, takže děti této třídy používají pouze jednu kopii této rodičovské třídy, která je vytvořena v paměti. Třída je skupina objektů, které sdílejí běžné rysy nebo atributy. Vytvoření virtuální třídy dává objektově orientovaným programovacím jazykům schopnost používat vícenásobné dědictví, když jsou druhé nebo více generačních rodičovských tříd odvozeny z běžných základních tříd předků. V závislosti na odkazovaném jazyku počítačového programování se „virtuální“ klíčové slovo, podobné klíčové slovo nebo syntaxe a sémantika třídy používají k tomu, aby naznačovala, že určitá třída je považována za virtuální. V programovacím jazyce, jako je C ++, může třída zdědit všechna členská data a členské funkce z obou rodičovských tříd najednou a mít přístup k oběma sadám PARdata a funkce. Mezi další jazyky, které podporují vícenásobné dědictví, patří Perl, Python, TCL a Eiffel.

Problém se vyskytuje ve více dědických hierarchiích, když dvě nebo více tříd rodičů používané k vytvoření třídy dítěte jsou původně odvozeny pouze od jedné nebo stejné třídy prarodiče. Tomu se říká diamantový problém, název pramení z toho, jak by hierarchie v této situaci vypadala. Když se program kompilátoru pokusí instalovat třídu, jako je třída vnoučat vyrobená ze dvou rodičovských tříd se společným prarodičem, dvě kopie prarodiče jsou vyrobeny v paměti, jeden pro každého rodiče.

Vzhledem k nejednoznačnosti způsobené více kopiemi stejného prarodiče v paměti není kompilátor schopen zjistit, která kopie prarodiče, které by měl vnuk použít pro přístup k prarodicím datům nebo funkcím. K nápravě této situace je v C ++ prarodič vyroben na virtuTřída UAL při deklarování rodičů. To způsobí, že kompilátor vytvoří pouze jednu kopii prarodiče v paměti, kterou oba rodiče sdílejí. Jakmile se prarodič stane virtuální třídou, kompilátor nemá problém s rozhodováním o tom, jak by měl vnuk přístup k prarodiči, protože existuje pouze jedna kopie prarodiče.

Při strukturování hierarchií třídy by měla být věnována velká pozornost, zejména pokud budou v budoucnu zahrnuty do základny pro mnohem větší hierarchie. Správné využití virtuální třídy dává hierarchii třídy větší šířku ve vývoji; Mají však potenciál způsobit chyby, které je obtížné najít. Studie principů solidního počítačového programování pomůže zajistit, aby nedošlo k neočekávaným vedlejším účinkům nesprávné organizace programu.

JINÉ JAZYKY

Pomohl vám tento článek? Děkuji za zpětnou vazbu Děkuji za zpětnou vazbu

Jak můžeme pomoci? Jak můžeme pomoci?