Quelle est l'utilisation de using namespace std
?
J'aimerais voir une explication en termes de Layman.
std
(où sont déclarées les fonctionnalités de la bibliothèque standard C++, telles que string
ou vector
.).Après avoir écrit cette instruction, si le compilateur voit string
, il saura que vous faites peut-être référence à std::string
, et s'il voit vector
, il saura que vous faites peut-être 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 verra string
ou vector
, il ne saura pas à quoi vous faites référence. . Vous devrez lui indiquer explicitement std::string
ou std::vector
, et si vous ne le faites pas, vous obtiendrez une erreur de compilation.
Lorsque vous appelez using namespace <some_namespace>;
, tous les symboles de cet espace de noms deviennent visibles sans ajouter le préfixe d'espace de nom. Un symbole peut être par exemple une fonction, une classe ou une variable.
Par exemple. si vous ajoutez using namespace std;
, vous ne pouvez écrire que cout
au lieu de std::cout
lors de l'appel de l'opérateur cout
défini dans l'espace de nommage std
.
Ceci est quelque peu dangereux car les espaces de noms sont destinés à éviter les conflits de noms et en écrivant 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 nom. Par exemple:
#include <iostream>
using std::cout;
int main() {
cout << "Hello world!";
return 0;
}