Kezdőoldal » Számítástechnika » Programozás » Mire jók a dekonstruktorok az...

Qaxqaxqax kérdése:

Mire jók a dekonstruktorok az objektekben?

Figyelt kérdés

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(:



#C++ #Java #konstruktor #dekonstruktor
2013. máj. 11. 22:04
 1/6 anonim ***** válasza:

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

2013. máj. 11. 22:16
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
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.
2013. máj. 11. 22:18
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
ahogyan az előző kettő hozzászóló írja: olyan dolgokat definiálhatsz benne amit az objektum törlése előtt kell. felszabadíthatja maga után a lockolt táblát, memóriát, fájlt, elmentheti az utolsó lefutás időpontját stb. javaban ez sincs jól megoldva, így a használata nem javasolt.
2013. máj. 11. 23:15
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
100%

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.

2013. máj. 11. 23:51
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

@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á.

2013. máj. 12. 00:27
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

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

2013. máj. 12. 00:29
Hasznos számodra ez a válasz?

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

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!