Zum Inhalt springen

using namespace std


Brei

Empfohlene Beiträge

Original geschrieben von b-r-e

Hallo,

unser lehrer hat uns versucht zu erklären was es mit using namespace std auf sich hat. Hat aber keiner richtig verstanden.

hat das was mit den >> und << von den couts und cins zu tun?

Könnt ihr mir helfen?

"using namespace std" ist eine Direktive. Im Gueltigkeitsbereich der Datei wird der Namensbereich (namespace) mit dem Namen std zur Verfügung (using) gestellt. Man kann dies auch weglassen, dann müsste man aber überall cout durch std::cout ersetzen, weil die globale Variable cout zum Namensbereich std gehört. Mit dieser Direktvie tut man das einfach gesagtdem Compiler vorher sagen ;)

<< und >> sind Ein- bzw. Ausgabeoparatoren und können bzw. müssen eben bei der Verwendung von z.B. cout und cin benutzt werden. Man kann diese auch überlagern (z.B. für eigene Klassen).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein. Im Detail weiss ich es auch nicht, aber soviel:

iostream.h wurde vor dem eigentlichen Standard entwickelt. Es wurde nicht im Standard aufgenommen. Eine weiterentwicklung, modifikation oder sonst wie (was) wurde dann als iostream in den Standard aufgenommen.

iostream.h ist älter als iostream. Zudem liegt alles im Namensraums std , iostream.h liegt dagegen im globalen Namensraum.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Noch ein Nachtrag um den Unterschied zwischen <iostream> und <iostream.h> aufzuklaeren.

Es handelt sich tatsächlich um zwei verschiedene Dateien. Warum iostream keine Endung mehr hat, weiss wohl nur die ISO ;)

Im Grunde sind beide gleich, iostream deklariert noch den namespace:

iostream.h:


extern istream cin; ///< Linked to standard input
extern ostream cout; ///< Linked to standard output
:
usw...
[/PHP]

iostream:

[PHP]
namespace std {

extern istream cin; ///< Linked to standard input
extern ostream cout; ///< Linked to standard output
:
usw...
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...