scope resolution operator ::

Mit dem scope resolution operator :: 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).



AnyWare@Wachtler.de