Kezdőoldal » Számítástechnika » Programozás » A statikus függvényeket miért...

A statikus függvényeket miért nem lehet a main függvényeken kívül meghívni?

Figyelt kérdés

A statikus tagváltozókat pedig lehet.

class osztaly {

public:

static void x(int x) {p = x;}

static int p;

};


int osztaly::p = 0; //Ez jó,ezt lehet

void osztaly::x(4); //Ezt meg nem lehet és nem tudom,hogy miért.


Ha én függvénnyel szeretném inicializálni a statikus változót akkor azt nem tehetem meg a main függvényen kívül?


2012. júl. 21. 23:57
 1/1 iostream ***** válasza:

A C++ vezérlési szerkezete úgy néz ki, hogy inicializál minden statikus változót, majd elkezdi végrehajtani a main függvényt. Tehát a függvényeken kívül nem lehet kód, csak változódeklarációk/definíciók meg típusmegadások. Szerinted az mikor futna le?



Szóval szigorúan nézve: de, a main függvények kívül is inicializálhatsz statikus változót, sőt: ott kell. Ugyanis az inicializálás az a kezedeti értékadás, azt a mainen kívül KELL megtenni:


struct A

{

static int x;

};


int getFour() { return 4; }


//ezt hívjuk egy statikus változó INICIALIZÁLÁSÁNAK

int A::x = getFour();


int main()

{}


Ha úgy nézzük az inicializálást, ahogy te gondoltad, azaz értékadás, akkor de, lehet a mainen kívül is, egy másik függvényben:


struct A

{

static int x;

static void X() {x = 10;}

};


int A::x;


void f()

{

//ez nem inicializálás

A::X();

}


int main()

{

f();

}



Remélem segített kicsit megérteni a C++ lélektanát. Amúgy próbáld ki, hogy FÜGGVÉNYHÍVÁST írsz a mainen kívülre, nem függvény- vagy változódeklarációt.


void osztaly::x(4);


Ez még mindig nem függvényhívás.

2012. júl. 22. 12:39
Hasznos számodra ez a válasz?

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!