Scope Resolution Operator (::) in C++

Aus dev.kaibel.net
Zur Navigation springen Zur Suche springen

Scope Resolution Operator (::) in C++

Der Scope Resolution Operator (::) wird in C++ verwendet, um den Gültigkeitsbereich (Scope) eines Namens eindeutig anzugeben. Er zeigt an, zu welchem Namensraum, welcher Klasse oder welchem Kontext ein Symbol gehört.

Verwendung

Der Operator `::` kann in mehreren Situationen auftreten:

1. Zugriff auf globale Variablen oder Funktionen

Wenn eine lokale Variable denselben Namen wie eine globale Variable hat, kann man mit `::` auf die globale Version zugreifen.

int x = 10;

void foo() {
    int x = 5;
    std::cout << ::x; // gibt 10 aus (globale Variable)
}

2. Zugriff auf Klassenmitglieder außerhalb der Klassendefinition

Wenn ein Klassenmitglied (z. B. eine statische Variable oder eine Methode) außerhalb der Klassendefinition definiert wird, muss der Operator `::` verwendet werden.

class MyClass {
public:
    static int value;
    void show();
};

// Definition außerhalb der Klasse
int MyClass::value = 42;

void MyClass::show() {
    std::cout << "Wert: " << value << std::endl;
}

3. Zugriff auf Namespaces

Mit dem Bereichsoperator können Elemente aus einem bestimmten Namespace angesprochen werden.

namespace Math {
    double pi = 3.14159;
}

int main() {
    std::cout << Math::pi; // Zugriff auf Variable im Namespace Math
}

4. Leerer Scope (Globaler Namensraum)

Ein leerer Bereichsoperator (`::name`) verweist immer auf den globalen Namensraum.

::printf("Hallo Welt"); // verwendet die globale printf-Funktion

Zusammenfassung

Verwendung Bedeutung Beispiel
Globale Variable Zugriff auf Variable außerhalb der Funktion ::x
Klassenmitglied Definition oder Zugriff außerhalb der Klasse Klassenname::Mitglied
Namespace Zugriff auf Elemente in einem Namespace std::cout
Globaler Scope Zugriff auf globale Namen ::printf()

Siehe auch

Quellen