PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied zwischen "cout" und "std::cout" ?


Nasenbaer
2002-10-30, 21:21:59
Hi,
schonwieder verwirrt mich das das Online-Buch "C++ in Action" etwas. :)
Der Autor schreibt immer "std:cout" anstatt einfach nur "cout". Gibt es da nen Unterschied oder nicht?

Mfg Nasenbaer

Exxtreme
2002-10-30, 21:28:59
Also das "std" ist ein sog. Namespace. Namespaces sorgen dafür, daß sich zwei gleichlautende Klassen/Funktionen/wasweissichwas nicht in die Quere kommen. Du kannst jetzt einfach cout benutzen weil irgendwo in deinen Headern die Anweisung "use std" drin steht. Du könntest theoretisch auch deinen eigenen Namespace kreieren, müsstest ihn aber mit angeben:
meineigenernamespace:cout. Dann wüsste der Compiler, daß er deine Funktion/Klasse nehmen soll und nicht die vom Namespace std.

Hope that helps.

Nasenbaer
2002-10-30, 21:39:51
Achso.
Naja hab mich das auch nur gefragt, weil ich sonst immer cout genommen hab und es auch so in jedem anderem Tutorial stand. Hatte mich deshalb etwas verwirrt. :)

MFg Nasenbaer

zeckensack
2002-10-30, 21:45:05
using namespace std;
^^ sorgt dafür daß alle im namespace std definierten Symbole global verfügbar sind. In vielen Büchern steht das in jedem Beispielprogramm drin.

Lässt man es weg, muß man explizit auflösen, ergo std::cout.

Ist irgendwo gaaaanz tief unten so (oder ähnlich definiert):namespace
std
{
class cout { /*hassenichgesehen boah!*/}; // hier ist nix, nur eine Deklaration
class cin //uswusf
<...>
}

Man muß namespaces insofern von Klassen mit statischen Membern unterscheiden, als daß sie keine Definitionen enthalten müssen (trotzdem natürlich können), reine Deklarationen reichen schon.