DUPLICATES possibles: strong>
Pourquoi "Utilisation de l'espace de noms std;" considéré comme un mauvaise pratique en C ++?
Utilisation de l'espace de noms STD P>est-ce juste une question de préférence? Ou existe-t-il une raison valable de préférer p>
xxx pré> ou p>
#include <string> myString std::string;
3 Réponses :
Ceci est une version modifiée d'une autre réponse que j'ai écrite sur le même sujet. Jusqu'à la version 3 maintenant.
Le problème majeur est des conflits de noms, en ce que si vous avez une variable appelée ignorant tous les problèmes au compilateur, c'est également un problème pour que quiconque vienne lire votre code. Ces 5 caractères supplémentaires garantissent que la prochaine personne qui maintient votre code connaît exactement ce que vous voulez dire sans avoir à vérifier le haut du fichier toutes les autres lignes pour voir si vous voulez dire (de l'efficacité C ++) dans la majorité des cas, il est très bénéfique d'utiliser p> comme s'il existe une version spécialisée de Swap, le compilateur Utilisera cela, sinon il tombera sur prise par exemple du code à l'aide de la < Un href = "http://fr.wikipedia.org/wiki/pimpl" rel = "Nofollow NOREFERRER"> PIMPL Idiom . Lorsque la copie par défaut peut copier toutes les données de la mise en œuvre réelle, où tout ce qui doit être effectué consiste à échanger les pointeurs. L'utilisation d'un swap spécialisé pourrait économiser d'énormes quantités d'heure d'exécution et les bibliothèques bien conçues doivent la spécialiser. P> préférez toujours Évitez Avoir des milliers de Tout le reste est d'opinion. p> p> comptez code> dans votre code et que vous êtes
à l'aide de namepace std; code> sera ambigu de ce que vous voulez dire. Ce n'est pas seulement
compte code>.
Reverse code> et
égal code> sera également inclus, qui sont tous des identificateurs courants. Par exemple, cela entraînera une erreur de compilation: p>
std :: chaîne code> ou
MyLib :: chaîne code> lorsque vous écrivez
chaîne code> p>
Il convient également de noter que vous ne devez jamais mettre un à l'aide de Namspace xyz code> dans un fichier d'en-tête, car il peut se propager à tous les fichiers qui incluent ce fichier d'en-tête, même s'ils ne veulent pas utiliser cet espace de noms. . Un autre problème ici est qu'il n'est pas clair que l'espace de noms STD a été importé, de sorte que le responsable (ou dans 3 mois) ajoute une variable avec le même nom que la fonction STD obscure incluse dans la même unité de compilation et puis consacre une heure à essayer de trouver la cause de l'erreur de compilation. p>
std :: échange code>. Si vous appelez
std :: échange code>, vous utilisez toujours la version de base, qui n'appelera pas la version spécialisée (même si elle existe). P>
En résumé, p>
à l'aide de std :: échange code> sur
std :: swap () code> p> l> l>
à l'aide d'un espace de noms std code> dans une en-tête à tout prix en raison de la propagation, essayez d'éviter d'utiliser dans les fichiers de mise en œuvre. P> li>
à l'aide de STD :: FOO code> En haut de chaque fichier n'est pas le moyen d'aller. Au plus, utilisez-la pour utiliser les classes communément utilisées. P> li>
ul>
Lol ... (presque) chaque dupe de cette question a une réponse de votre part ...: D
Les usings sont corrects dans les fichiers du CPP. Vous préféreriez la deuxième syntaxe dans les en-têtes afin de ne pas les obtenir propagées dans votre projet. P>
Personnellement, je préfère le Par exemple: p> en utilisant code> déclaration plutôt que le
à l'aide de la directive code>.
#include<string>
using std::string;
string x="abc";
Dupe de Stackoverflow.com/questions/1452721/... Parmi beaucoup, beaucoup d'autres.
Vous avez raison! Pourquoi n'ai-je pas trouvé ceux quand j'ai cherché? Pardon