Mailinglist Archive: opensuse-programming-de (174 mails)

< Previous Next >
Re: C++ Namespace
  • From: Philipp Thomas <philipp.thomas@xxxxxxxxx>
  • Date: Mon, 12 Jan 2004 02:32:53 +0100
  • Message-id: <i6t300pufgbu66qn5c2bl871s40kacmtlj@xxxxxxx>
Daniel Feist <clusterix.perl@xxxxxx> [So, 11 Jan 2004 21:19:28]:

>Ich bin vor kurzem von C in C++ umgestiegen und habe folgende Frage:

Dann solltest du dir schleunigst gute Literatur zu dem Thema beschaffen :)

>Was hat es mit diesem "using namespace std" oder besser wozu braucht man
>es? Wenn ich es nicht angebe, meldet mein Compiler einen Fehler. Bin
>für jede Hilfe dankbar!

Namespaces bilden einen Namensraum. Damit können Funktionen etc. den
gleichen Namen haben, wenn sie in unterschiedlichen Namensräumen liegen.
Alle Klassen, Funktionen, Konstanten etc. der Standard C++ Bibliotheken
liegen im namespace std. Wenn du also darauf zugreifst, musst du entweder
dem Namen immer ein std:: voranstellen, einzelne Namen in den globalen
Namensraum ziehen (z.B. 'using std::string;') oder aber eben alle Namen des
namespace std in den globalen namespace stellen (durch besagtes
'using namespace std;').

In einem Header sollte *niemals* ein globales 'using namespace xy' stehen,
denn man weiss nie, wo der Header verwendet wird. Dort sollte der
Namensraum *immer* explizit angegeben werden, also z.B. std::ostream.

Im normalen Code sollte IMO auch nie ein globales 'using namespace std;'
stehen, aber da liegen die Ansichten unter Programmierern schon deutlich
auseinander.

Philipp


< Previous Next >
Follow Ups
References