Ugrás a tartalomhoz

global scope

A Wikiszótárból, a nyitott szótárból


Főnév

global scope (tsz. global scopes)

  1. (informatika) A globális változók olyan változók, amelyeket egy fájl tetején, a függvényeken kívül deklarálunk. Ezek a program teljes futási ideje alatt léteznek, és bárhonnan elérhetők ugyanabban a fájlban.



1. Példa globális változóra

#include <iostream>

int globalVar = 10; // Globális változó

void kiir() {
    std::cout << "Globalis valtozo: " << globalVar << std::endl;
}

int main() {
    kiir(); // Elérhető a globális változó
    globalVar = 20; // Módosítható is
    kiir(); 

    return 0;
}

🔹 Mi történik itt?
- A globalVar változót a függvényeken kívül deklaráltuk, így elérhető mind a kiir() függvényben, mind a main() függvényben. - A kiir() képes kiolvasni és kiírni a globális változó értékét. - A main() módosíthatja a változót, és ez a módosítás mindenhol érvényes lesz.



2. Globális változók veszélyei

Bár a globális változók kényelmesek lehetnek, van néhány hátrányuk: - Megnehezíthetik a hibakeresést, mert bárhonnan módosíthatók. - Nehézkes párhuzamos programozás esetén, mert több szál is módosíthatja őket. - Növelhetik a függőségeket, ami rontja a kód karbantarthatóságát.



3. statikus globális változók (file-scope)

Ha egy globális változót static kulcsszóval jelölünk, akkor csak abban a fájlban lesz elérhető, ahol deklarálták.

#include <iostream>

static int localGlobal = 5; // Csak ebben a fájlban látható

void kiir() {
    std::cout << "Local Global: " << localGlobal << std::endl;
}

int main() {
    kiir();
    return 0;
}

🔹 Ezt mire jó?
- Ha több fájlban is van ugyanilyen nevű változó, azok nem keverednek. - A változó rejtve marad más fájlok elől.



4. Az extern kulcsszó – Globális változók megosztása több fájl között

Ha egy globális változót több fájlban is szeretnénk használni, az extern kulcsszóval tudjuk bejelenteni más fájlokban.

global.cpp fájl:

int globalVar = 42; // Globális változó deklaráció és definiálás

main.cpp fájl:

#include <iostream>

extern int globalVar; // Csak deklaráció, a változó máshol van definiálva

int main() {
    std::cout << "Globalis valtozo: " << globalVar << std::endl;
    return 0;
}

🔹 Mi történik itt?
- Az extern kulcsszó jelzi, hogy a változót másik fájlban definiálták. - Az összekompilált programban az értéke a global.cpp fájlból fog érkezni.



Összegzés

Globális változók előnyei: - Bárhonnan elérhetők az adott fájlból. - Könnyen megoszthatók extern segítségével több fájl között. - Hasznosak, ha egy állapotot az egész program szintjén kell tárolni.

Hátrányai: - Megnehezíti a hibakeresést. - Nehezebben karbantartható kódot eredményezhet. - Több szálas programokban adatversenyt (race condition) okozhat.

👉 Javaslat: Használj inkább osztályokat, singleton mintát vagy függvényparamétereket globális változók helyett, ahol csak lehet.