iostream
est le nom du fichier dans lequel cout est défini. D'un autre côté, std
est un espace de noms, équivalent (dans un certain sens) au paquet de Java.
cout est une instance définie dans le fichier iostream
, à l'intérieur de l'espace de noms std.
Il peut exister une autre instance cout
dans un autre espace de noms. Pour indiquer que vous souhaitez utiliser l'instance cout
à partir de l'espace de noms std
, vous devez écrire
std::cout
, en indiquant l'étendue.
std::cout<<"Hello world"<<std::endl;
Pour éviter le std::
partout, vous pouvez utiliser la clause using
.
cout<<"Hello world"<<endl;
Ce sont deux choses différentes. L'un indique la portée, l'autre fait l'inclusion réelle de cout
.
En réponse à votre commentaire
Imaginez que, dans iostream deux instances nommées cout
existe, dans les différents espaces de noms
namespace std{
ostream cout;
}
namespace other{
float cout;//instance of another type.
}
Après y compris <iostream>
, vous auriez encore besoin de spécifier l'espace de noms. La déclaration #include
ne dit pas "Hey, utilisez le cout dans std ::". C'est ce que using
est pour, pour spécifier la portée
@Neil Alors, quel est le but de SO? Pour ne poser que des questions qui n'ont aucun moyen d'y répondre en lisant un livre ou en cherchant sur Internet? –
@Neil Butterworth: d'accord! pas plus de questions stupides après celui-ci, sans lire les concepts d'un livre. – Moeb
@Kevin Toute personne qui pense pouvoir apprendre le C++ en posant des questions sur SO se trompe et perd son temps. –