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
указать область действия