iostream
- это имя файла, в котором определяется cout. С другой стороны, std
- пространство имен, эквивалентное (в некотором смысле) пакету java.
cout - это экземпляр, определенный в файле iostream
, внутри пространства имен std.
В другом пространстве имен может существовать другой экземпляр cout
. Поэтому, чтобы указать, что вы хотите использовать экземпляр cout
из пространства имен std
, вы должны написать
std::cout
с указанием области действия.
std::cout<<"Hello world"<<std::endl;
Чтобы избежать std::
везде, вы можете использовать пункт using
.
cout<<"Hello world"<<endl;
Это две разные вещи. Один указывает область действия, другой - фактическое включение cout
.
В ответ на ваш комментарий
Представьте себе, что в iostream два экземпляра с именем cout
существуют в разных пространствах имен
namespace std{
ostream cout;
}
namespace other{
float cout;//instance of another type.
}
После включения <iostream>
, вам все равно нужно указать пространство имен. Оператор #include
не говорит «Эй, используйте cout в std ::». То, что using
, для уточнения области применения
@Neil Тогда в чем же цель SO? Чтобы задавать вопросы, на которые не было ответа, читали книгу или искали в Интернете? –
@Neil Butterworth: ладно! не более глупых вопросов после этого, не читая понятия из книги. – Moeb
@ Kevin Любой, кто думает, что может изучать C++, задавая вопросы о SO, вводит в заблуждение себя и тратит наше время. – 2010-04-15 18:59:54