A statikus függvényeket miért nem lehet a main függvényeken kívül meghívni?
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?
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.
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!