C++ -ban, mi az a dynamic_cast, és, hogy kell használni?
Lényeg az,hogyha többalakúságnál az az ha egy bázisosztályhoz rendeled a származtatott osztály létrehozott objektumának a memóriacímét akkor ezzel nem fogod tudni elérni a származtatott osztály olyan metódusait amik nincsenek virtuálisként deklarálva a bázisosztályban.
De ha te mégis el szeretnéd velük érni akkor nem tehetsz mást minthogy létrehozol egy származtatott osztály típusú objektumot és azzal eléred.
A dinamikus típusváltással ezt könnyen és biztonságosan megteheted.Azért jó a dinamikus típusváltás mert ha nem tudod még fordítási időben,hogy pontosan milyen objektumot akarsz kasztolni akkor a dynamic_cast - ot használva nem fog összeomlani a programod futás közben,hogyha esetleg olyan objektumot akarsz konvertálni amit nem is lehet valójában például x típusra.
Kezdő vagyok VÁLASZA:
---------
Lényeg annyi,hogyha:
X *x = dynamic_cast<X*>(&obj) ;
//Hogyha itt az obj objektum memóriacíme egy X típusú objektumra mutat akkor vissza adja annak memóriacímét és bele kerül *x be.Ellenkező esetben NULL ad vissza.
Rosszul írtam így helyes:
//Hogyha itt az obj objektum X típusú,akkor vissza adja annak memóriacímét és bele kerül *x be.Ellenkező esetben NULL ad vissza.
Azt hiszem az előzőt is jól írtam xD
Na mindegy majd jön iostream.
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!