A quoi sert d’ using namespace std
?
J’aimerais voir des explications en termes simples.
std
(où les fonctionnalités de la bibliothèque standard C ++, telles que ssortingng
ou vector
, sont déclarées). Après avoir écrit cette instruction, si le compilateur voit une ssortingng
il saura que vous faites référence à std::ssortingng
, et s’il voit un vector
, il saura que vous faites référence à std::vector
. (Pourvu que vous ayez inclus dans votre unité de compilation les fichiers d’en-tête où ils sont définis, bien sûr.)
Si vous ne l’ écrivez pas, lorsque le compilateur voit une ssortingng
ou un vector
il ne saura pas à quoi vous faites référence. Vous devrez lui indiquer explicitement std::ssortingng
ou std::vector
, et si vous ne le faites pas, vous obtiendrez une erreur de compilation.
Lorsque vous appelez à l’ using namespace
tous les symboles de cet espace de noms seront visibles sans append le préfixe d’espace de noms. Un symbole peut être par exemple une fonction, une classe ou une variable.
Par exemple, si vous ajoutez à l’ using namespace std;
Vous pouvez écrire simplement cout
au lieu de std::cout
lorsque vous appelez l’opérateur cout
défini dans l’espace de noms std
.
Ceci est assez dangereux car les espaces de noms sont destinés à éviter les collisions de noms et à écrire en using namespace
vous épargnez du code, mais vous perdez cet avantage. Une meilleure alternative consiste à utiliser uniquement des symboles spécifiques, les rendant ainsi visibles sans le préfixe d’espace de noms. Par exemple:
#include using std::cout; int main() { cout << "Hello world!"; return 0; }