Utilise des sans nom d'espace de noms en C++
Quand une utilisation sans nom d'espace de noms en C++ ? Est-il préférable dans tous les sens, de libre et de la fonction? Aussi, doit-il être utilisé uniquement dans le fichier source et pas dans le fichier d'en-tête?
- Voir à ce sujet : la Supériorité de sans nom d'espace de noms plus statique ?
Vous devez vous connecter pour publier un commentaire.
Selon Stroustrup, vous devez l'utiliser dans des endroits où, en vieux C vous avez fait
static
globals. L'idée est que les biens en question peuvent être "global" pour le fichier source où elles sont, mais de ne pas polluer l'espace de noms de tous les autres fichiers source de votre compilation.En d'autres termes, vous ne devriez pas être la création d'
static
globals en C++. Vous devez utiliser des espaces de noms sans nom à la place.J'ai trouvé quelques situations où ils sont utiles dans des fichiers d'en-tête, mais qui devrait être rare. Je pense que pour déclarer à lancer des exceptions. Dans ce cas, les définitions en question sera mondial pour tout ce qui
#include
s que l'en-tête, mais pas pour des choses qui n'en ont pas.static
n'est plus marqué comme obsolète dans le dernier numéro de la FCD (n3225). Le comité a reconnu qu'il est moins bavard pour une seule fonction ou mondial. Il est aussi plus facile de "grep", puisque près de la déclaration, et ne nécessite pas un analyseur.static
, et (2), ils ne sont jamais aller retirerstatic
dans ce contexte, en raison de C de la compatibilité, de sorte que la dépréciation c'est une menace vide.static
.Sans nom d'espace de noms est privé de l'unité de traduction et cela peut être utilisé pour protéger les variables globales et les fonctions ayant le même nom survenant dans les différentes unités de traduction, de sorte qu'aucun lien ne les conflits surviennent.
Par exemple, vous avez besoin d'une classe qui ne seront définies dans un .fichier cpp et utilisé uniquement à l'intérieur du fichier. Vous voulez l'appeler
CModuleLock
. Si elle n'est pas dans une sans nom d'espace de noms et quelques autres .fichier cpp accidentellement a une autre classeCModuleLock
pas dans une sans nom d'espace de noms, vous ne serez pas en mesure de lier votre programme.Il est utilisé pour le nom de la clandestinité. Chaque sans nom d'espace de noms est unique. Le lien ici explique plus en détail. Il est généralement utilisé dans un fichier source pour masquer les fonctions qui doivent seulement avoir une liaison interne (par exemple, n'a pas exposé au monde extérieur).
Sans nom les espaces de noms sont le "C++ version" de global statique des variables et des fonctions. Notez que vous pouvez également utiliser un sans nom d'espace de noms pour les classes.
Fondamentalement, l'espace de noms de résoudre les conflits entre les classes de même nom, les identifiants, et de la fonction.pour plus d'informations, cliquez sur le lien ci-dessous
https://simplifiedtutorial4u.blogspot.in/2017/08/what-is-namespace-in-c.html