::
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).