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

Contenu supprimé Contenu ajouté
Gzen92 (discussion | contributions)
typo
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 15 :
 
Pour simplifier le code, et les désigner sans spécifier l'espace de noms, il faut utiliser l'instruction suivante :
<sourcesyntaxhighlight lang="cpp">
using namespace std;
</syntaxhighlight>
</source>
 
Utiliser différents espaces de noms permet, lors d'un projet en équipe ou de l'utilisation de bibliothèque externes, de créer plusieurs entités portant le même nom.
Ligne 24 :
 
Pour déclarer vos fonctions, variables et classes dans votre espace de noms, placez-les dans un bloc de ce type :
<sourcesyntaxhighlight lang="cpp">
namespace identifiant
{
// Déclarations ici ...
}
</syntaxhighlight>
</source>
 
Exemple :
<sourcesyntaxhighlight lang="cpp">
namespace exemple
{
Ligne 39 :
}
}
</syntaxhighlight>
</source>
 
== Utiliser un espace de noms ==
Pour utiliser les entités d'un espace de noms en dehors de celui-ci (voire dans un autre espace de noms), vous pouvez utiliser le nom précédé de l'espace de nom :
<sourcesyntaxhighlight lang="cpp">
int a = exemple::suivant(5);
</syntaxhighlight>
</source>
 
ou utiliser la déclaration <code>using</code> :
<sourcesyntaxhighlight lang="cpp">
using exemple::suivant;
...
int a = suivant(5);
</syntaxhighlight>
</source>
 
ou encore utiliser la directive <code>using</code>
 
<sourcesyntaxhighlight lang="cpp">
using namespace exemple;
...
int a = suivant(5);
</syntaxhighlight>
</source>
 
'''Recommandation''': Il est préférable de ne pas utiliser les directives <code>using</code> 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 <code>using</code> sur d'autres espaces de noms.
Ligne 68 :
 
Exemple:
<sourcesyntaxhighlight lang="cpp">
namespace global {
namespace exemple {
Ligne 77 :
namespace ge = global::exemple; // alias
int a = ge::suivant(5);
</syntaxhighlight>
</source>
 
== En plusieurs fois ==
Ligne 85 :
*Fichier '''exemple.h'''
 
<sourcesyntaxhighlight lang="cpp">
namespace exemple
{
int suivant(int n);
}
</syntaxhighlight>
</source>
 
*Fichier '''exemple.cpp'''
 
<sourcesyntaxhighlight lang="cpp">
#include "exemple.h"
 
Ligne 103 :
}
}
</syntaxhighlight>
</source>