In all unseren C ++ - Kursen setzen alle Lehrer immer using namespace std;
direkt nach dem #include
s in ihre .h
Dateien. Dies scheint mir seitdem gefährlich zu sein, wenn ich diesen Header in ein anderes Programm einbinde, wird der Namespace in mein Programm importiert, möglicherweise ohne es zu merken, zu beabsichtigen oder zu wollen (die Aufnahme von Headern kann sehr tief verschachtelt sein).
Meine Frage ist also doppelt: Habe ich Recht, dass using namespace
sie nicht in Header-Dateien verwendet werden sollte, und / oder gibt es eine Möglichkeit, sie rückgängig zu machen, etwa:
//header.h
using namespace std {
.
.
.
}
Noch eine Frage in die gleiche Richtung: Sollte eine Header-Datei #include
alle Header enthalten, die die entsprechende .cpp
Datei benötigt, nur diejenigen, die für die Header-Definitionen benötigt werden, und die .cpp
Datei #include
den Rest oder keine lassen und alles deklarieren, was sie benötigt extern
?
Die Argumentation hinter der Frage ist dieselbe wie oben: Ich möchte keine Überraschungen beim Einfügen von .h
Dateien.
Wenn ich recht habe, ist das auch ein häufiger Fehler? Ich meine in der realen Programmierung und in "echten" Projekten da draußen.
Danke dir.
using namespace
Anweisungen Namenskollisionen erhalten, können Sie den vollständig qualifizierten Namen verwenden, um das Problem zu lösen.