Kezdőoldal » Számítástechnika » Programozás » C++ mire jók a virtuális...

C++ mire jók a virtuális függvények?

Figyelt kérdés
Helló, ha pl egy base classban definiálok egy virtual voidot, és az öröklő classban egy publikus voidot, a nevük megyegyezik, mire jó? Próbáltam, ha az öröklő classban nem létezne e az a függvény akkor a virtuális voidot hívná e meg, de nem. Mire jó?

2018. márc. 6. 15:19
 1/4 anonim ***** válasza:
2018. márc. 6. 15:55
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Itt egész jól megfogalmazzák:

[link]


Kb. úgy működik, hogy amikor egy A osztályból származtatsz egy B osztályt, és az A egyik metódusát a B felülírja a sajátjával, akkor a alap esetben a B-ből létrehozott objektumra mutató pointer (amivel meghívjuk) típusa határozza meg, hogy az ős vagy a leszármazott metódus hívódik-e meg. Más szavakkal: a fordító, amikor bedrótozza a hívást a megfelelő metódushoz, akkor csak azt nézi, hogy épp milyen típusra mutatunk.


Ha egy A típusú pointerrel mutatunk egy B objektumra, akkor ilyenkor a fordító csak azt látja, hogy A típusú a pointer, tehát az A metódusát hívja meg. Ez nem mindig jó, pl. ha ős osztályú objektumokat tud tárolni egy általános konténer.


Ha az ős metódus virtuális, akkor a hívás nem a mutatott típus szerinti osztályra mutat, hanem először a virtuális metódus táblára (VMT), és onnan veszi azt az osztály (ill. metódust), amilyen a mutatott objektum valójában.


Tehát ha egy A típusú pointerrel mutatunk egy B objektumra, akkor is a megfelelő, B osztályhoz tartozó metódus fog meghívódni.

2018. márc. 6. 16:39
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
0%
Manapság már semmire nem jók. A smart pointerek bevezetése óta feleslegessé váltak.
2018. márc. 10. 18:27
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

A smart pointernek nincs sok köze a virtuális metódusokhoz.


[link]

[link]

2018. márc. 12. 09:48
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!