Kezdőoldal » Számítástechnika » Programozás » Egy objektumot konstruktor...

Egy objektumot konstruktor hívás nélkül is lehet "resetelni"?

Figyelt kérdés

Adott egy osztályom, melynek egy példányát létrehozom a konstruktor futtatásával. Itt beállítok bizonyos adattagoknak amolyan kezdő értékeket.


Ezek az adattagok futtatás során módosulnak. Mi van akkor, ha ugyanezt az objektumot vissza akarom állítani az alapértékekhez. Futtassam ismét a konstruktort? Akkor létrejön még egy ilyen objektum nem?


Ha írok egy "reset" függvény, amely gyakorlatilag ugyanazokat az adattag beállításokat tartalmazza az jó?



2016. szept. 17. 15:26
1 2
 1/12 anonim ***** válasza:
100%
Helyzetfüggő, de mindkét megoldás jó lehet. Egy Reset függvény előnye, hogyha az objektumra több referencia is van, akkor mindenhol resetelődik, míg új példány létrehozásakor csak ott, ahol a referenciát is frissíted.
2016. szept. 17. 15:38
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
21%

"Mi van akkor, ha ugyanezt az objektumot vissza akarom állítani az alapértékekhez. Futtassam ismét a konstruktort? "


Igen.


"Akkor létrejön még egy ilyen objektum nem? "


Attól függ. Ha a régit írod felül vele, akkor nem.


Objektum objektumPéldány = new Objektum();


//itt csinálsz vele mindenfélét


objektumPéldány = new Objektum();


"Ha írok egy "reset" függvény, amely gyakorlatilag ugyanazokat az adattag beállításokat tartalmazza az jó?"


Jó ez is, csak fölösleges.

2016. szept. 17. 15:38
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
77%

Na most azért nagyon nem ugyanarról van szó, ha létrehozol még egy objektumot (mert hogy a konstruktort nem tudod "futtatni" egy létező objektumot, vagy visszaállítasz egy objuktumot az alapértékeire.

Ez a kérdés így túl általános, jó lenne tudni, hogy miről van szó konkrétan.

2016. szept. 17. 15:41
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
40%

"Na most azért nagyon nem ugyanarról van szó, ha létrehozol még egy objektumot (mert hogy a konstruktort nem tudod "futtatni" egy létező objektumot, vagy visszaállítasz egy objuktumot az alapértékeire. "


Akárhogyan erőlködök, én nem értem ezt a mondatot. Kifejtenéd?

2016. szept. 17. 16:47
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:
Ok sikerült. Megoldanom.
2016. szept. 17. 17:05
 6/12 anonim ***** válasza:
47%
Azért arra figyelj, hogy ne csinálj memory leak-et, mert #2 is írt elég sok marhaságot.
2016. szept. 17. 17:29
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
73%

#4 nem tudom mit kéne rajta kifejteni.

A konstruktor új objektumot hoz létre mindig.

2016. szept. 17. 17:31
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
0%

" Azért arra figyelj, hogy ne csinálj memory leak-et, mert #2 is írt elég sok marhaságot."


Igen, azt csinálna egy ilyen tényleg, ha nem 2016-ban lennénk, hanem 1960-ban és nem C#-t használnánk.


[link]

2016. szept. 17. 17:48
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
100%

Amit #2 írt, az nettó baromság, így csinál az ember memory leak-et. Oh, by the way, 2016-ban is kellene érteni a memóriakezeléshez, és nem mindent a garbage collectorra bízni (pláne, hogy C++ nyelvről van szó, amiben nincs is GC)


A legjobb módszer amit használhatsz, hogy kiszervezed az inicializálást egy külön metódusba, és a konzisztencia kedvéért azt hívod meg a konstruktorodban is. Meg lehet oldani többszörös konstruktorhívást, hogy így működjön (elvégre ez C++), de előbb pakolnám tele a kódomat millió meg egy goto-val, minthogy ezt használjam.

2016. szept. 17. 18:34
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

A 18:34-es válaszoló tökéletesen kifejtette.


Amúgy meg attól, hogy bizonyos nyelveken van GC, még nem kell orrba-szájba használni, mivel az is tud jelentősen lassítani a program futásán.

2016. szept. 17. 19:52
Hasznos számodra ez a válasz?
1 2

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!