Mik azok a virtuális függvények?
És mi ez? :
bazis_osztaly *mut = new szarmaztatott_osztaly;
//Kezdő vagyok VÁLASZA:
"bazis_osztaly *mut = new szarmaztatott_osztaly;"
Ebben a sorban létrehozol a dinamikus memóriába egy származtatott osztály típusú objektumot és ennek az objektumnak a memóriacímét,hozzárendeled a bázistípusú mutatóhoz.
Azért engedi a fordító,hogy származtatott típus címét rendeld bázistípusú mutatóhoz mert valójában a származtatott objektum egyben bázistípusú is.
Szóval mivel a származtatott típusú objektum egyben bázistípusú is ezért ez a kifejezés helyes.
Az a többalakúság,hogy egy származtatott objektumot úgy kezelsz,mintha az a bázistípusból volna.
Ha a virtual kulcsszót használjuk az ősosztály Kiir függvényében, akkor a fordító mindig a pointer aktuális címének megfelelő függvényt hívja meg.
Ha jól tudom akkor ha létrehozol egyetlen virtuális függvényt is akkor lesz egy virtuális táblázata az osztálynak.Az osztály minden példányának pedig lesz egy erre mutató mutatója.
És ha például a kiir függvény virtuális és egy származtatott osztály objektumának a címét rendeled hozzá ahhoz a bázisosztály típusú mutatóhoz akkor a virtuális táblában a kiir függvény bejegyzéshez oda kerül a származtatott osztályban felülírt kiir függvénynek a memóriacíme.Azt hiszem így van.
A gyakorlatban ez mit jelent?
És itt mért azt írja ki, hogy VOID METODUS(); ahelyett, hogy VIRTUAL VOID METODUS(); ?????
A programom itt van:
A válaszoló szinte tökéletes választ adott fentebb.
Az utóbbi kérdésedre a válasz az, hogy a prb típusú mutatón keresztül érsz el egy objektumot, és a prb típus metodus nevű függvénye nem virtuális, tehát a fordító azt statikusan köti, fordítási időben határozza meg, hogy mit hívjon.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!