Где объявлен cout?
-
11-12-2019 - |
Вопрос
Мой профессор информатики хочет, чтобы мы нашли декларацию cout
.Я скомпилировал простую программу Hello world, используя g++ и параметр -E.Вот как выглядит мой hello.cpp:
#include <iostream>
using namespace std;
int main(){
string name="";
cout << "Good morning! What's your name?";
cin >> name;
cout << "Hello " << name << ".\n";
return 0;
}
Моя команда компиляции:
g++ -E hello.cpp > hello.p
В hello.p я выполнил поиск в VIM, вот так:
:/cout
Я вижу следующую строку:
extern ostream cout;
Разве это декларация cout
, и является cout
экземпляр ostream
сорт?
Редактировать:
Что такое wcout
декларация там для?Если я правильно помню, буква «w» означает «широкий», но я не знаю, какое это имеет значение.Что такое wcout
и wostream
?
Решение
Да, это действительно декларация std::cout
, найденный внутри <iostream>
заголовок.
Соответствующую стандартную деталь можно найти в §27.4.1 [iostream.objects.overview]
:
Заголовок
<iostream>
синопсис
#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 Заголовок
<iostream>
объявляет объекты, которые связывают объекты со стандартными потоками C, предусмотренными функциями, объявленными в<cstdio>
(27.9.2) и включает все заголовки, необходимые для использования этих объектов.
Другие советы
Это объявление cout и является ли cout экземпляром класса ostream?
Да, это декларация std::cout
и да, это пример std::ostream
.Объявлено extern
так что объект создается только один раз, даже если заголовок включен в несколько единиц перевода.