Valaki el tudna mondani mi a haszna a virtualis fuggvenyeknek C++-ban?
Ha virtual nélkül használod, akkor vannak olyan esetek, mikor az utódban (Alma) az ős (Gyümölcs) függvényei hívódnak meg, akkor is, ha te az utódban azokat a függvényeket felülírtad:
#include <iostream>
using namespace std;
class Gy {
public:
void iz() {cout << "Gy" << endl;}
};
class A : public Gy {
public:
void iz() {cout << "A " << endl; }
};
int main() {
Gy *a = new A();
a->iz();
delete a;
return 0;
}
--> Mi azt szeretnénk, ha az a->iz() meghívás után azt írná ki, hogy "A", de ehelyett azt írja ki, hogy "Gy", pedig a függvény felül volt írva.
--> ha odatesszük a virtual szócskát a Gy osztály iz függvénye elé, akkor már helyesen fog működni a program, és az "A" szócskát fogja kiírni.
---------
A Java-ban minden metódus virtuális, anélkül, hogy eléjük tennéd a virtual szócskát, mivel így praktikusabb, mert legtöbbször azért írsz felül egy metódust, hogy mikor arra kerül a sor, akkor az új metódus hívódjon meg, és ne a régi.
Jézusom, szánalom a köbön.
Olvass utána gyökér.
Nem defekt, mert vannak olyan esetek, mikor az ős függvényét akarjuk meghívni. Javában ez is lehetséges.
....
Melleséleg javában nincsenek pointerek.
....
Ez nem csak pointereknél van így.
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!