Namespace

Das nächste Programm enthält gleich dreimal „std::“. Das muss zunächst so sein.

//zweites.cpp

#include <iostream>//cout <<

int main()

{

            std::cout << "Hallo!“;

            std::cout << std::endl << "Hallo, Welt!";//in einer neuen Zeile schreiben

            return 0;//gibt 0 zurück

}//Ende von main()

Nun ändere den Code bitte einmal an den Stellen, an denen std:: steht! Lösch mal bitte alle "std::"! Dann müsste beim Compilieren eine Fehlermeldung erscheinen.

//zweites.cpp

#include <iostream>

int main()

{

cout << "Hallo!";//Fehlermeldung

cout << endl << "Hallo, Welt!“;

return 0;

}

Dabei muss die Fehlermeldung kommen. Also verbessere das Programm wie folgt:

//zweites.cpp

#include <iostream>

using namespace std;

int main()

{

       cout << "Hallo!";//Keine Fehlermeldung mehr.   

cout << endl <<"Hallo, Welt!";

            return 0;

}

Du siehst, dass sich etwas geändert hat. Den ganz genauen Sachverhalt mit dem namespace muss ich dir nun erklären:

Es gibt Headerdateien wie zum Beispiel iostream. Ebenso wie das Konzept der Headerdateien hat auch das Konzept der "namespaces" mit der Organisation von Code und mit der Vermeidung von Namenskonflikten zu tun. Ich erkläre das jetzt:

Ein Programmierer hat in seinem Quelltext (in seinem Programm, das er gerade schreibt) ein Element namens X definiert. Dann bindet er durch "#include" eine weitere Headerdatei ein, um mehr Funktionen zu haben. Er muss aber feststellen, dass die neue Bibliothek ebenfalls ein X enthält! Er könnte nun sein X umbenennen, er könnte auf die neue Bibliothek verzichten oder er könnte in der Bibliothek das X entfernen. Befriedigend ist keine dieser drei Vorschläge! Deswegen wurde zur Lösung solcher Namenskonflikte, die auch auftreten können, wenn mehrere Programmierer an einem Programm arbeiten, das Konzept der "Namespaces" eingeführt.

Es ist aber auch lästig, immer "std::" zu schreiben, wenn es einmal keine Namens­konflikte gibt! Darum gibt es die Abkürzung: using namespace std;. Wenn Du "using namespace std;" schreibst, sparst Du Dir die vielen std::