săli de clasă virtuale
săli de clasă virtuale
Vom continua să modifice cea mai recentă versiune a programului nostru, adăugând la prototipul functiei int A :: Fun1 (int); specificator virtuale.
Nu contează cum am încercat să numim o funcție membru de clasa A din orice obiect de clasă derivată, reprezentativ fragmentul D nu este posibilă. În primul rând, designeri construi site-uri, configurați un tabel de funcție virtuală, iar apoi vom începe sa „remake-ul“, creând vizibilitatea pe bază de țiglă de bază a obiectului independent. În zadar. Facilitatea este construit, tabelul de functii virtuale este, de asemenea, setat. Până la sfârșitul duratei de viață a obiectului funcțiilor virtuale nu sunt disponibile.
Noi ar trebui să acorde o atenție deosebită faptului că, indiferent de locul de apel funcția virtuală (și noi o numim în mod direct din piesele de bază ale obiectului), funcția de înlocuire în valoarea corectă a acestui indicator este trecut ca parametru.
Este evident că o ajustare corespunzătoare a valorii indicelui este făcută în timpul funcției de înlocuire de apel. În acest caz, există cel puțin două abordări diferite pentru punerea în aplicare a algoritmului de reglare.
Valoarea de corecție corespunzătoare poate fi determinată în momentul în care constructorul obiectului și stocate ca o valoare constantă cu tabelele de functii virtuale, sau acest indicator poate fi configurat dinamic, la momentul apelarea unei functii virtuale printr-un cod software special care setările pentru cursor. Dar toate acestea depinde de limbajul specific de punere în aplicare.
În această secțiune, avem încă pentru a discuta despre conceptul de clasă de bază virtuală. Conform corespunzătoare specificatorul virtuale FTB pot fi incluse într-o bază de date descriptor:
Modificăm programul nostru. Vom adăuga la descriptorii de baze de date derivate clasele B și C de calificare virtuală:
Aici este graficul după modificarea clasei D derivată:
Dar modul în care structura clasei D, reprezentat ca un circuit parțial. Specificator virtuale ajută la minimizarea structurii de clasă derivată. clase de bază virtuale nu sunt reproduse.
Iată o diagramă a clasei reprezentative obiect D.
specificator virtuală în descrierea bazei minimizează structura obiectului. Diferite variante de accesare a membrilor de date ale bazei plumb piese la o modificare a acelorași variabile.
obiect fragment de bază asociat cu derivații ei, fragmente dintr-o varietate de moduri, care pot fi în mod egal prevăzute cu acces la fragmentul membru bază de date.
Introducem un nou concept legat de accesul la funcțiile de date și membre ale claselor derivate.
Pe noțiunea de nume pe bază de poziție dominantă, de obicei, domina, care determină corectitudinea accesului la membrii clasei derivate declarate pe baza unor clase de bază virtuale.
Această regulă prevede că posibilitatea de a atinge calea graficului aciclic direcționat același nume câteva funcții sau membri de date duce la ambiguitate, cu excepția cazului când există între numele raportului poziție dominantă.