using und namespace


Namensräume sollen dem Programmierer helfen, bei gleichen Namen für Variablen, Klassen etc. Konflikte zu vermeiden.

Betrachten wir folgendes C++-Programm:

#include <iostream>

namespace MyCpp
{
  double var;
}

float var;

int main()
{
  int var;
  std::cout << "globale variable     : "  << ::var      << std::endl; // 0
  std::cout << "lokale variable      : "  << var        << std::endl;
  std::cout << "variable im Namespace: "  << MyCpp::var << std::endl; // 0
}


Hier wird drei Mal eine Variable namens var ausgegeben. Die Variable innerhalb main() hat dort ihren begrenzten Scope (Sichtbarkeitsbereich). Um die globale Variable var aufzurufen, setzt man :: davor. Wir können nun ebenfalls in einem eigenen Namensbereich (hier: MyCpp) eine Variable var erzeugen. Hierbei muss man diese Variable durch Voranstellen der Bezeichnung des Namensbereiches und den Operator :: ansprechen.

cout, cin, endl gehören in den Namensbereich std. Daher wird dieser Namen vorangestellt. Wollen Sie das vermeiden, gibt es zwei Möglichkeiten:
a) Man gibt den gesamten Namensbereich std durch using namespace std; frei.
b) Man macht die verwendeten Elemente des Namensbereiches std gezielt bekannt: using std::cout;  usw.


Übersicht Keywords C++