Kezdőoldal » Számítástechnika » Programozás » Mik azok a virtuális függvények?

Mik azok a virtuális függvények?

Figyelt kérdés

És mi ez? :

bazis_osztaly *mut = new szarmaztatott_osztaly;


2012. nov. 18. 05:01
 1/6 A kérdező kommentje:
C++
2012. nov. 18. 05:05
 2/6 anonim ***** válasza:

//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.

2012. nov. 18. 06:46
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
A virtuális függvények olyan függvények amik támogatják a többalakúságot.
2012. nov. 18. 07:00
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

A gyakorlatban ez mit jelent?


És itt mért azt írja ki, hogy VOID METODUS(); ahelyett, hogy VIRTUAL VOID METODUS(); ?????


A programom itt van:

[link]

2012. nov. 18. 08:08
 5/6 iostream ***** válasza:

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.

2012. nov. 18. 12:21
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Köszönöm, most már jobban értem!
2012. nov. 18. 12:51

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

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!