Sie sind auf Seite 1von 2

Einführung in das Programmieren(für Ingenieeure), Themenblatt Namensräume

Namensräume in C++

Einführung

Folgende Programmzeile begegnet Ihnen häufig am Anfang Ihrer Programme:

using namespace std;

Was passiert hier?

Die Schlüsselworte using namespace weisen den Compiler an, den Namensraum der
C++ Standardbibliothek (std) zu nutzen. Im nachfolgenden Programm kann nun auf
die Spezifizierung des Namensraumes verzichtet werden, wenn man auf einen Bezeichner
der Standardbibliothek zurückgreifen möchte. Es reicht dann aus

cout << "Hallo!" << endl;

statt

std::cout << "Hallo!" << std::endl;

zu schreiben. Gründe für die Einführung von Namensräumen sind die Zusammenfassung
von Bezeichnern in Gruppen sowie die Vermeidung von Namenskonflikten, die bei der
Zusammenarbeit mehrerer Programmierer oder der Nutzung von Bibliotheken auftreten
können. Durch Abgrenzung mit Namensräumen kann dies verhindert werden.

Definition aus der Wikipedia

Mit Namensräumen kann ein Autor große Programmpakete mit vielen de-
finierten Namen schreiben, ohne sich Gedanken machen zu müssen, ob die
neu eingeführten Namen in Konflikt zu anderen Namen stehen. Im Gegen-
satz zu der Situation ohne Namensräume wird hier nicht der ganze Name neu
eingeführt, sondern nur ein Teil des Namens, nämlich der des Namensraumes.
Ein Namensraum ist ein deklaratorischer Bereich, der einen zusätzlichen
Bezeichner an jeden Namen anheftet, der darin deklariert wurde. Dieser
zusätzliche Bezeichner macht es weniger wahrscheinlich, dass ein Namens-
konflikt auftritt mit Namen, die anderswo im Programm deklariert wurden.
Es ist möglich den gleichen Namen in unterschiedlichen Namensräumen ohne

1
Einführung in das Programmieren(für Ingenieeure), Themenblatt Namensräume

Konflikt zu verwenden, auch wenn der gleiche Name in der gleichen Über-
setzungseinheit vorkommt. Solange sie in unterschiedlichen Namensräumen
erscheinen, ist jeder Name eindeutig aufgrund des zugefügten Namensraum-
bezeichners.1

Beispiel zur Nutzung von Namensräumen

#include <iostream>

using namespace std;

namespace otto
{
int zahl = 2;
}

namespace hans
{
int zahl = 4; // Gleicher Bezeichner wie oben!
}

int main()
{
cout << "2 + 4 = " << otto::zahl + hans::zahl << endl;

return 0;
}

1
http://de.wikipedia.org/wiki/Namespace