Mire jók a dekonstruktorok az objektekben?
Válaszba tudtok valami olyat írni pluszba hogy egy dekonstruktor kiürít egy sima tömböt, vagy hasonlót?
c++ / Java
Válaszokat előre is köszi(:
A destruktorokra gondolsz, ha jól sejtem :)
Amikor ez meghívódik, lehetőséged van például bezárni a nyitva levő fájlokat, adatbázis-kapcsolatokat, stb., mielőtt az objektumod megszűnik létezni (de az erőforrások lefoglalása nem).
A destruktor elsődleges célja az hogy felszabadítsuk az általa lefoglalt erőforrásokat illetve megszüntessük az őrá mutató referenciákat más objektumokban hogy később ne történhessen érvénytelen hivatkozás.
"Még valami: Java alatt általában nem szokás, illetve nem illik használni, mivel gyakorlati értelme nincs, viszont a garbage collectort jól ki lehet vele akasztani, ami meg felborítja az egész szoftvert."
Ez nem teljesen igaz, de jó közelítéssel igen. Nem "kiakasztja" hanem kiakaszthatja és nem "felborítja" hanem felboríthatja a használata. Egyébként meg ott is mindig használva van a destruktor csak implicit. Aki használja annak nagyon tisztában kell lennie és biztosítania kell hogy ne okozzon problémát hogy a destruktorok lefuttatása nem determinisztikus.
@Előző: Nos, ha ennyire rámegyünk a pontos részletezésre, akkor rámutatnék, hogy az implicit használat mint olyan nem állja meg a helyét, tekintettel arra, hogy egyáltalán nem garantált, hogy a destruktorod valóban meghívásra kerül, ráadásul, ha nem definiálsz destruktort, az Objecttől örökölt verzió egy teljesen üres metódus: [link]
"illetve megszüntessük az őrá mutató referenciákat más objektumokban hogy később ne történhessen érvénytelen hivatkozás"
Ilyet meg, ha lehetséges, ne írjunk, mert egyetlen osztálynak sincs a saját scope- ján kívül turkálnivalója, plusz olyan objektumot nem szed össze a GC, amire van élő referencia.
Egy szó mint száz, destruktort írni Java -ban csak kivételes esetekben szabad.
C++ esetén persze más helyzet, ott nincs GC, így ott szükség van rá.
...nem beszélve arról, hogy a mondatom konkrétan így szólt: " a garbage collectort jól ki LEHET vele akasztani, AMI meg felborítja az egész szoftvert."
Ez pedig megáll, HA felrúgod a GC-t, vele megy az egész VM.
További 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!