Kezdőoldal » Számítástechnika » Programozás » A statikus adattagok a tagvált...

A statikus adattagok a tagváltozókkal ellentétben nem definiálódnak automatikusan ugye? És ezért nem lehet őket a konstruktorban egyből inicializálni mert még nem léteznek és ezért még csak memóriaszemét sem lehet bennük ugye?

Figyelt kérdés
Ha butaságot írtam akkor világosítsatok fel pls.
2012. okt. 28. 04:45
 1/5 iostream ***** válasza:

Kevered a definiálást és az inicializálást.

Ha nem definiálsz valamit, akkor nem hivatkozhatsz rá, különben a linker azt fogja mondani, hogy nem találja. Ha lefordul a program, és használod a változót, akkor valahol definiáltad. Ez FORDÍTÁSI időben történik.

Az INICIALIZÁLÁS meg egy futási idejű dolog, és a legtöbb statikus a main függvény meghívódása ELŐTT inicializálódik (a kivételt a függvényekben lévő statikusok, azok akkor jönnek létre, amikor először rájukfut a vezérlés, tehát akár az is lehet, hogy soha).

Ráadásul a statikusok, ha nem inicializálod őket, automatikusan 0-ra jönnek létre, így soha nem lehet bennük memóriaszemét kezdetben.

2012. okt. 28. 09:58
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

"legtöbb statikus a main függvény meghívódása ELŐTT inicializálódik"


Ha ez igaz akkor ez miért nem fordul le hisz magától inicializálódnia kéne nullára.


class H

{

public:

static int x ; //Muszáj inicializálnom mert nem inicializálódik magától 0 ra.

};


int main()

{

H h;

return int(0) ;

}


Akkor mégsem inicializálódnak maguktól nem.

2012. okt. 28. 20:56
 3/5 iostream ***** válasza:
Olvasd el még egyszer. Kevered a definiálást az inicializálással, az egyik fordítási idő (erre kaphatsz fordítási hibát), a másik futási.
2012. okt. 28. 20:58
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Nem értem. :(
2012. okt. 28. 22:14
 5/5 A kérdező kommentje:

A deklaráció:

A deklarációval létrehozom valaminek a prototípusát.

Változók esetében int x; egyben deklaráció és definiálás is mert nem csak prototípus hanem használható létrehozott változó szóval meg is van valósítva.Ezért ez deklaráció és definíció is.


definíció:

Akkor egyértelmű hogy a definíció valaminek a működési megvalósítása pl egy függvénynek.


inicializáció pedig a kezdeti értékadás ami futásidőben történik.


Értem én ezeket mégsem tudom,hogy az iostream miről beszél.


A könyv szerint muszáj inicializálni a statikus adattagokat mert ha nem teszem meg fordítási hibát kapok.


Világosítsatok már fel pls teljesen össze vagyok zavarodva.

2012. okt. 28. 22:27

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!