Wo wird cout deklariert?
-
11-12-2019 - |
Frage
Mein Informatikprofessor möchte, dass wir die Erklärung von finden cout
.Ich habe ein einfaches Hello World-Programm mit g++ und dem Parameter -E kompiliert.So sieht mein hello.cpp aus:
#include <iostream>
using namespace std;
int main(){
string name="";
cout << "Good morning! What's your name?";
cin >> name;
cout << "Hello " << name << ".\n";
return 0;
}
Mein Kompilierungsbefehl:
g++ -E hello.cpp > hello.p
In hello.p habe ich eine Suche in VIM durchgeführt, etwa so:
:/cout
Ich sehe die folgende Zeile:
extern ostream cout;
Ist das die Erklärung von cout
, und ist cout
eine Instanz von ostream
Klasse?
Bearbeiten:
Was ist das wcout
Erklärung dort für?Wenn ich mich richtig erinnere, steht der Buchstabe „w“ für „breit“, aber ich weiß nicht, welche Bedeutung das hat.Was ist ein wcout
und ein wostream
?
Lösung
Ja, das ist tatsächlich die Erklärung von std::cout
, gefunden im <iostream>
Header.
Den entsprechenden Normteil finden Sie in §27.4.1 [iostream.objects.overview]
:
Header
<iostream>
Zusammenfassung
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
p1 Der Header
<iostream>
deklariert Objekte, die Objekte mit den Standard-C-Streams verknüpfen, die von den in deklarierten Funktionen bereitgestellt werden<cstdio>
(27.9.2) und enthält alle Header, die zur Verwendung dieser Objekte erforderlich sind.
Andere Tipps
Ist das die Deklaration von cout und ist cout eine Instanz der Klasse ostream?
Ja, das ist die Erklärung von std::cout
und ja, es ist ein Beispiel dafür std::ostream
.Es ist deklariert extern
sodass das Objekt nur einmal erstellt wird, auch wenn der Header in mehreren Übersetzungseinheiten enthalten ist.