::
kann man zwischen einer
globalen und einer lokalen Verwendung ein- und desselben Namens
unterscheiden. Normalerweise bezieht sich ein Name im Zweifelsfall
auf die innerste Vereinbarung. Mit dem Operator ::
wird dagegen
das entsprechende globale Objekt angesprochen:
// Time-stamp: "(15.11.01 16:10) scope.cpp [Klaus Wachtler (aw38)]" #include <iostream> using namespace std; int variable = 10; int main() { double variable = 3.1415; cout << variable << " " << ::variable << endl; if( (1<2) ) { char variable = 'A'; cout << variable << " " << ::variable << endl; } return 0; }
Mit variable
wird immer die Vereinbarung des innersten Blocks
ausgewählt, mit ::variable
dagegen immer die globale.
Alle eventuell dazwischenliegenden Vereinbarungen sind nicht ansprechbar.
Die Ausgabe dieses Programms lautet also:
3.1415 10 A 10
Im Zusammenhang mit Klassen
hat der Operator ::
noch eine erweiterte Bedeutung, siehe
dazu Klassen;
ebenso im Zusammenhang mit Namensbereichen, siehe
Namensbereiche (namespace).