Egyszer inicializálódó változó a jávában van? Milyen kulcsszó kell elé?
Sztem a static-ra gondolsz..
PL: public static void ...
Az első hozzászóló vagyok.
Javaban, C#-ban tudtommal, úgy történik, hogy ha statikus a függvény ami természetesen egy osztályon belül van, akkor akkor fog inicializálódni, ha meghívjuk, természetesen, ha mégegyszer meghívom, akkor azon belüli változó tartalma elvész, olyan mintha egy új példány lenne, de mégsincs példányosítva. Természetesen, ha az először mehívott függvény módosítja az osztályán belüli statikus változókat, akkor a második függvény már azokat használja. De szerintem ez C++-ban is így van, feltéve, hogy nem pointereket használ. De lehet, hogy tévedek, márt jó pár éve volt már, hogy C++-oztam.
C++-ban létezik a static kulcsszónak egy olyan szemantikus jelentése is, hogy ha függvényben írod egy változó elé, akkor az a statikus táron, egyszer jön csak létre, és akárhányszor, akárhogy rekurzívan vagy bárhonnan hívod a függvényt, az mind ugyanazt a változót fogja használni. Ez a változó akkor jön létre amikor legelőször ráfut a vezérlés a deklarációjára, és a program befejezéséig él.
Tehát pl
void f(bool a)
{
if(a)
{
static int lol;
//valami kód
}
else
{
//... valami kód
}
}
Itt például a lol nevű változó akkor jön létre, amikor először meghívódik f true paraméterrel.
Na, a kérdező leírása alapján erre gondolt. Ilyen nincs Java-ban és C#-ban, de mivel minden függvény osztályhoz tartozik, ezért osztályszintű, static változókkal simán kiváltható, igaz, azok nem a függvény első hívásakor inicializálódnak, de meg lehet oldani, hogy úgy működjenek.
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!