Dans tous nos cours C ++, tous les professeurs mettent toujours using namespace std;
juste après le #include
s dans leurs .h
fichiers. Cela me semble dangereux car en incluant cet en-tête dans un autre programme j'obtiendrai l'espace de noms importé dans mon programme, peut-être sans le réaliser, le vouloir ou le vouloir (l'inclusion d'en-tête peut être très profondément imbriquée).
Ma question est donc double: ai-je raison de using namespace
ne pas utiliser dans les fichiers d'en-tête, et / ou y a-t-il un moyen de l'annuler, quelque chose comme:
//header.h
using namespace std {
.
.
.
}
Une autre question dans le même sens: un fichier d'en-tête devrait-il contenir #include
tous les en-têtes dont son .cpp
fichier correspondant a besoin, uniquement ceux qui sont nécessaires pour les définitions d'en-tête et laisser le .cpp
fichier #include
le reste, ou aucun et déclarer tout ce dont il a besoin extern
?
Le raisonnement derrière la question est le même que ci-dessus: je ne veux pas de surprises lors de l'inclusion de .h
fichiers.
De plus, si j'ai raison, est-ce une erreur courante? Je veux dire dans la programmation du monde réel et dans les «vrais» projets là-bas.
Je vous remercie.
using namespace
instructions, vous pouvez utiliser le nom complet pour résoudre le problème.