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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top