Onde é cout declarado?
-
11-12-2019 - |
Pergunta
Meu professor de ciência do computador quer que nós para encontrar a declaração de cout
.Eu compilei um simples Olá mundo de programa usando o g++ e o parâmetro-E.Aqui está o que o meu hello.cpp parece com:
#include <iostream>
using namespace std;
int main(){
string name="";
cout << "Good morning! What's your name?";
cin >> name;
cout << "Hello " << name << ".\n";
return 0;
}
Minha comando de compilação:
g++ -E hello.cpp > hello.p
No hello.p, fiz uma pesquisa no VIM, assim:
:/cout
Eu vejo a seguinte linha:
extern ostream cout;
É que a declaração de cout
, e é cout
uma instância do ostream
classe?
Editar:
O que é o wcout
declaração para lá?Se bem me lembro a letra "w" significa "grande", mas eu não sei o que implica que as tem.O que é um wcout
e um wostream
?
Solução
Sim, que é, de fato, a declaração de std::cout
, encontrado no interior do <iostream>
cabeçalho.
A norma em questão, a parte pode ser encontrado em §27.4.1 [iostream.objects.overview]
:
Cabeçalho
<iostream>
sinopse
#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 cabeçalho
<iostream>
declara objetos que associar objetos com o padrão C fluxos previstos pelas funções declaradas no<cstdio>
(27.9.2), e inclui todos os cabeçalhos necessários para usar esses objetos.
Outras dicas
É que a declaração do cout, e é cout uma instância da classe ostream?
Sim, essa é a declaração de std::cout
e sim, é uma instância de std::ostream
.Ele é declarado extern
para que o objeto é criada apenas uma vez, mesmo se o cabeçalho é incluído em várias unidades de tradução.