namespaces c
Une vue d'ensemble complète des espaces de noms en C ++ avec des exemples simples.
Jusqu'à présent, dans nos didacticiels précédents, nous avons tout vu sur les variables, les déclarations, les fonctions et d'autres entités de ce type utilisées en C ++.
Lors du développement d'applications en C ++, certaines situations particulières peuvent survenir, comme les mêmes noms de variables utilisés deux fois ou des fonctions définies avec les mêmes prototypes, etc. .
=> Consultez le guide de formation Perfect C ++ ici.
Ce que vous apprendrez:
- Qu'est-ce que l'espace de noms?
- Définition d'un espace de noms
- Accès aux membres de l'espace de noms
- La directive d'utilisation
- Espaces de noms imbriqués
- Espaces de noms externes
- Espaces de noms contigus
- Conclusion
- lecture recommandée
Qu'est-ce que l'espace de noms?
Voyons l'exemple ci-dessous:
#include #include int main() { int var; double var; std::cin>>var; }
Production:
Dans la fonction «int main ()»:
8:10: erreur: déclaration conflictuelle «double var»
7: 7: note: déclaration précédente comme «int var»
Dans l'exemple ci-dessus, nous avons défini deux variables avec des types différents mais le même identifiant. Ainsi, lorsque nous compilons cet exemple, nous obtenons une erreur comme indiqué dans la fenêtre Sortie. Ces déclarations contradictoires sont dues au fait que le même identificateur est utilisé pour nommer deux variables.
Ce type de situations donne lieu à une ambiguïté dans les applications.
C ++ introduit quelque chose appelé « espaces de noms »Pour résoudre ce problème. L'espace de noms en C ++ est comme un package ou une région ou une bibliothèque qui est utilisée pour différencier la variable ou les fonctions avec les mêmes identificateurs.
Un espace de noms peut contenir des variables, des fonctions, des classes ou d'autres objets et même un autre espace de noms. Chaque membre de l'espace de noms peut être référencé à l'aide d'un espace d'espace de noms. Cela aide le compilateur à différencier les différentes entités de programmation même si elles portent les mêmes noms.
Définition d'un espace de noms
En C ++, nous pouvons définir un espace de noms à l'aide du mot-clé ' espace de noms ' comme indiqué ci-dessous:
comment écrire un cas de test dans Excel
namespace namespace_name{ namespace_declarations; }
Donc, si nous devons définir un espace de noms nommé «test_space», nous pouvons le faire comme ci-dessous:
namespace test_space{ int var=10; }
La déclaration ci-dessus définit un espace de noms nommé «test_space». Comme indiqué, il a une variable entière var comme membre.
Accès aux membres de l'espace de noms
Maintenant, nous avons défini notre propre espace de noms «test_space» et comment accéder au contenu de cet espace de noms?
Dans le programme C ++, nous pouvons accéder aux membres de l'espace de noms en utilisant la syntaxe:
namespace_name::namespace_member;
Ainsi, la variable entière var déclarée dans l'espace de noms «test_space» ci-dessus est accessible comme suit:
test_space::var;
Consultez l'exemple complet ci-dessous pour illustrer les espaces de noms et leur utilisation.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< Production:
var local = 20,53
espace_test :: var = 10
Nous avons tout démontré sur la création et l'accès à un espace de noms dans l'exemple de programmation ci-dessus. Comme nous le voyons, «test_space» est un espace de noms que nous avons défini. Il contient une seule variable entière var définie. Ensuite, dans la fonction principale, nous avons une autre variable double var qui est initialisée.
Plus tard, nous affichons ces deux variables. Notez que bien que la variable double locale à l'intérieur du main puisse être imprimée directement, pour imprimer la variable d'espace de noms, nous devons la précéder du nom de l'espace de noms.
Cela a également résolu le problème des conflits entre les variables en raison des mêmes noms que nous avons discutés précédemment.
La directive d'utilisation
Dans notre rubrique précédente, nous avons vu que nous pouvons accéder aux membres de l'espace de noms en utilisant namespace_name :: namespace_member.
Si nous ne voulons pas spécifier un nom d'espace de noms partout dans le programme, nous pouvons utiliser le ' utilisant ”Pour inclure l'espace de noms dans le programme.
Cela se fait comme suit:
#include #include namespace test_space{ int var = 10; } using namespace std; using namespace test_space; int main() { double var = 20.53; cout<<'local var = '< Production:
var local = 20,53
espace_test :: var = 10
Dans l'exemple ci-dessus, nous avons utilisé deux instructions après avoir défini l'espace de noms «test_space».
Ceux-ci sont:
using namespace std; using namespace test_space;
La première instruction utilise la déclaration pour accéder à l'espace de noms «std» qui est un espace de noms standard prédéfini dans la bibliothèque C ++. Cet espace de noms est utilisé pour accéder à diverses fonctions telles que cin, cout, etc.
La deuxième instruction est utilisée pour inclure l'espace de noms «test_space» dans le programme.
Dans la fonction principale, nous pouvons voir que les fonctions comme cout et variable var n'ont pas besoin d'être précédées d'un nom d'espace de noms. On peut s'y référer directement. Mais comme var a un nom en conflit avec une variable locale dans la fonction principale, nous le référons en utilisant l'opérateur de résolution de portée (: :) car les espaces de noms ont toujours une portée globale.
Espaces de noms imbriqués
C ++ permet également d'avoir des espaces de noms imbriqués, c'est-à-dire un espace de noms défini dans un autre espace de noms.
comment trouver des fichiers apk sur une tablette Android
La syntaxe générale des espaces de noms imbriqués est la suivante:
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
Si nous devons accéder à ns2_code, nous pouvons y accéder comme suit:
ns1::ns2::ns2_code;
Laissez-nous vous montrer les espaces de noms imbriqués à l'aide de l'exemple de code suivant.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; using namespace first::second; int main() { double var = 20.53; cout<<'local var = '< Production:
var local = 20,53
premier :: var = 10
seconde :: var = 20
Nous avons utilisé des espaces de noms imbriqués dans le programme ci-dessus. Veuillez noter la manière dont la directive using est utilisée pour accéder aux espaces de noms. Il ne suffit pas de ne faire référence qu'une seule fois à l'espace de noms le plus interne. Si nous avons besoin d'un code de l'espace de noms le plus externe, nous devons le référencer séparément.
Nous pouvons utiliser un autre nom pour les espaces de noms appelé «alias». Ceci est particulièrement utile lors de l'utilisation d'espaces de noms imbriqués et le degré d'imbrication est élevé.
Nous pouvons démontrer l'alias d'un espace de noms en modifiant l'exemple ci-dessus.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< Production:
var local = 20,53
premier :: var = 10
seconde :: var = 20
Notez l'alias imbriqué qui est défini pour l'espace de noms first :: second. Une fois qu'un alias est défini, nous pouvons alors faire référence à l'espace de noms en utilisant un nom d'alias.
Espaces de noms externes
Parfois, lorsque nous avons trop d'espaces de noms à utiliser dans notre application, nous souhaitons peut-être placer tous les espaces de noms dans un fichier séparé. Cela peut être fait facilement. Lorsque les espaces de noms sont dans le fichier séparé, nous incluons simplement ce fichier dans notre programme et utilisons ensuite directement les espaces de noms et son contenu dans notre programme.
Par exemple, si nous avons un fichier nommé ns.h qui contient l'espace de noms suivant.
//ns.h namespace first{ int var = 25; }
Maintenant, dans notre programme, nous pouvons utiliser l'espace de noms «en premier» comme suit:
#include #include “ns.h” using namespace std; int main() { cout<Donc, une fois que nous avons inclus le fichier contenant les espaces de noms dans notre programme, nous pouvons utiliser les espaces de noms comme s'ils étaient déclarés globalement dans le même programme.
Espaces de noms contigus
C ++ nous permet également de définir quelque chose appelé comme des espaces de noms contigus. Les espaces de noms contigus sont les espaces de noms qui sont définis plusieurs fois en portant le même nom. En réalité, ce ne sont pas des espaces de noms séparés mais les extensions du même espace de noms.
Les espaces de noms contigus sont évidents dans l'exemple ci-dessous.
#include #include . namespace first{ int var = 10; } namespace first{ namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< Production:
var local = 20,53
premier :: var = 10
seconde :: var = 20
Notez dans l'exemple ci-dessus que nous avons défini le même espace de noms deux fois. Dans la première définition, nous avons une variable nommée var. Alors que dans la deuxième déclaration, nous avons un autre espace de noms défini.
Dans la fonction principale, nous avons accédé aux membres de l'espace de noms externe et interne et notons que les membres sont facilement accessibles.
C'est l'exemple des espaces de noms contigus, parfois également appelés «espaces de noms discontinus». Leurs définitions semblent séparées mais en réalité, ce sont des espaces de noms continus.
Conclusion
Avec cela, nous sommes arrivés à la fin de ce tutoriel sur les espaces de noms en C ++. Espaces de noms d'une manière qui nous permet de séparer notre code dans différents espaces ou régions afin que nous ayons la clarté dans sa lecture et aussi dans l'utilisation de ses membres.
Dans nos tutoriels suivants, nous en apprendrons plus sur les différents sujets de base du C ++ comme la gestion des exceptions, l'entrée / sortie de fichier, etc.
=> Vérifiez ici pour voir de A à Z des didacticiels de formation C ++ ici.
lecture recommandée
- Meilleure série de tutoriels C # GRATUITS: Le guide ultime de C # pour les débutants
- Test de charge avec les didacticiels HP LoadRunner
- Fonctions de bibliothèque en C ++
- 70+ MEILLEURS tutoriels C ++ pour apprendre la programmation C ++ gratuitement
- Programmation orientée objet en C ++
- Listes d'initialisation en C ++
- Itérateurs dans STL
- Encapsulation en C ++