« Programmation C++/Les espaces de noms » : différence entre les versions

Contenu supprimé Contenu ajouté
m Formatage, ajout de code
Ligne 12 :
Enfin, il est possible d'imbriquer un espace de noms dans un autre espace de noms.
 
Un exemple d'espace de nom est <ttcode>std</ttcode>, défini par la bibliothèque standard, regroupant en autre les flux standards <ttcode>cin</ttcode>, <ttcode>cout</ttcode> et <ttcode>cerr</ttcode>. Ainsi lorsque <iostream> est inclus dans une source, il sera possible de les accéder en les dénommant par leurs noms complets <ttcode>std::cin</ttcode>, <ttcode>std::cout</ttcode> et <ttcode>std::cerr</ttcode>.
 
Pour simplifier le code, et les désigner sans spécifier l'espace de noms, il faut utiliser l'instruction suivante :
Ligne 47 :
</source>
 
ou utiliser la déclaration <ttcode>using</ttcode> :
<source lang="cpp">
using exemple::suivant;
Ligne 54 :
</source>
 
ou encore utiliser la directive <ttcode>using</ttcode>
 
<source lang="cpp">
Ligne 62 :
</source>
 
'''Recommandation''': Il est préférable de ne pas utiliser les directives <ttcode>using</ttcode> dans un fichier entête, excepté dans les fonctions ''inline''. En effet, la directive ayant pour effet d'ouvrir l'espace de noms à l'espace global, toute unité qui inclurait ce fichier entête se verrait automatiquement ouvrir l'espace en question pouvant provoquer rapidement des collisions si cette même unité incluait d'autres fichiers entêtes utilisant aussi la directive <ttcode>using</ttcode> sur d'autres espaces de noms.
 
== Alias d'espace de noms ==