Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben
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).

Geschrieben

Naja, einleuchten tut mir das noch nicht.

Dass man std immer davor schreiben müsste hat unser lehrer auch gesagt.

Irgendwie will das nicht in meinen Schädel.

Geschrieben

Wir arbeiten in der BF auch ohne using namespace std; aber wir müssen auch kein std:: vor alles setzten. Hängt das damit zusammen das wir die Headerdateien als <datei.h> einbinden und nicht als <datei>?

mfg

Geschrieben

Jetzt bin ich noch mehr verwirrt.

Wir machen das so

# include <iostream>

using namespac std;

int main ()

{

cout << "Ausgabe";

return 0;

}

wir haben Visual Studio

Geschrieben

Ist doch auch richtig, so macht man das. Wie wir das in der Schule lernen ist es eigentlich nicht dem Standard entsprechend. Bei uns würde das so aussehen:


# include <iostream.h>


int main ()

{

cout << "Ausgabe";


return 0;

}

mfg

Geschrieben

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.

Geschrieben

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.

}

Geschrieben

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...
}

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...