Scope Resolution Operator (::) in C++
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
- ISO C++ Standarddokumentation
- cppreference.com: Scope Resolution Operator