Mal ein kleiner Versuch Namespaces zu erklären:
Namespaces wurden in den ISO-Standard aufgenommen um die Namensvergabe zu vereinfachen. Sie ermöglichen z.B. Klassen, die im Grunde das selbe tun, aber unterschiedlichen Kontext haben, gleich zu benennen. Wie z.B. cin oder cout. Diese stehen in std. Es koennte aber sein, das du gleichnamige Funktionen schreibst, die z.B. ein LCD-Display bedienen.
namespace lcd {
void cout() { /* ... */ } // deine cout Funktion (Die Deklaration ist Schmarrn, aber hier nicht wichtig.)
}
void main(void)
{
lcd::cout(); // Das geht
cout(); // würde nicht gefunden werden
using namespace lcd; // Jetzt weiss der Compiler bescheid, dass er in diesem Namespace Funktionen aufrufen darf.
cout(); // geht
std:cout(); // Um sicher zu gehen, dass die richtige Funktion verwendet wird, kann man den Namespace nennen.
}