Zusätzlich zu Funktionen, Klassen und Aufzählungen bietet C++ Namespaces als Mechanismus zum Verwalten und Kontrollieren doppelter Funktions- und Klassennamen. Wenn Sie beispielsweise einige Ihrer Funktionen mit Namen benennen, die sich mit den Namen von Funktionen in der Standardbibliothek überschneiden, erhalten Sie einen Namenskonflikt, dh eine Neudefinition einer Funktion aus der Standardbibliothek, was zu Mehrdeutigkeiten führen kann und Fehler im Programm. Dank des Namensraums kann dieses Problem umgangen werden, indem die Funktionen einfach in Namensraum gestellt werden.
namespace My_code { class complex { /* ... */ }; complex sqrt(complex); // ... int main(); } int My_code::main() { complex z {1,2}; auto z2 = sqrt(z); std::cout << '{' << z2.real() << ',' << z2.imag() << "}\n"; // ... }; int main() { return My_code::main(); }
In diesem Fall ermöglicht Ihnen der Bereich My_code das Schreiben einer separaten Implementierung der main() -Funktion, die in der echten main() -Funktion aufgerufen wird, dafür müssen Sie die main () Funktion über den My_code Namespace .
My_code::main();
Funktionen aus der Standardbibliothek werden auf ähnliche Weise aufgerufen, zum Beispiel:
std::max(3, 5);
Um Ihnen das Leben zu erleichtern und nicht jedes Mal std zu schreiben, können Sie die Direktive using verwenden.
using namespace std;