Skip to main content

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 založ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 jazyce 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, že konkrétní třída je třeba považovat za virtuální.je, když třída dítěte může být odvozena z více rodičovských tříd současně.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 mateřských dat a funkcí.Mezi další jazyky, které podporují vícenásobné dědictví, patří Perl, Python, TCL a Eiffel.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 vnuka použít pro přístup k prarodicím datům nebo funkcím.Aby se tuto situaci napravilo, v C ++ je prarodič vyroben z virtuální třídy 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.V budoucnu nebo se stát základnou 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.