Kezdőoldal » Számítástechnika » Programozás » Mikor ön létre a virtuális...

Mikor ön létre a virtuális tábla? C++

Figyelt kérdés

És ha már létrejött akkor az miért van hogy csak ebben az esetben hívódik meg az a függvény aminek címe a virtuális táblázatban van?:

F *f = new I ;


2012. okt. 12. 06:54
 1/3 iostream ***** válasza:
Mi a kérdés? Fogalmazd meg rendesen.
2012. okt. 12. 10:22
Hasznos számodra ez a válasz?
 2/3 anonim válasza:

Ha a leírt kérdés saját kútfőből fakad, akkor több hibát is látok benne, ami miatt valóban jobban körül kellene írnod, mit is szeretnél kérdezni... Ez így picit elvontnak hangzik.


Ha a kérdés ebben a formában egy tesztkérdés volt, akkor ha komolyan veszem, van rá válasz:

Az I osztály az F-ből származik. Az F osztály absztrakt osztály, azaz tartalmaz pure virtual függvény deklarációt (is). Az I osztály pedig megvalósítja az összes hiányzó virtual függvényt (nem marad pure virtual függvény az I-ben).

Ekkor mivel az F osztály úgynevezett absztrakt osztály, nem lehet példányosítani, mert van benne pure virtual függvény (a fordító hibát ad).

Az I-t viszont lehet, mert minden virtual függvényre van érvényes kód.

Ekkor csak a gyerek osztály függvénye futtatható. Az ősre (absztrakt osztályra) csak pointerrel lehet hivatkozni. Amely végül egy olyan virtual függvényt fog tartalmazni, ami a gyerek típushoz tartozik.


class F{

public:

virtual void myFn()=0;

};

class I: public F{

public:

virtual void myFn(){}

}


Az eredeti fő kérdésre "Mikor jön létre a VMT?" a válasz az, hogy fordítási időben.

Futási időben a new operátor egy I tipusú objektumhoz szükséges memória területet allokál, amelyen belül elérhető az F osztály VMT-je is. Igy az f pointert a fordító tudja F tipusúnak is, és I tipusúnak is értelmezni, ha arra kérjük.

2012. okt. 13. 21:27
Hasznos számodra ez a válasz?
 3/3 iostream ***** válasza:

"Futási időben a new operátor egy I tipusú objektumhoz szükséges memória területet allokál, amelyen belül elérhető az F osztály VMT-je is"


Mármint az I VMT-je tartalmazza a nem felüldefiniált metódusok címét is.

2012. okt. 13. 22:51
Hasznos számodra ez a válasz?

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!