Quelle est la différence entre le fichier d'en-tête et de l'espace de noms?
Je veux savoir la différence exacte entre l'en-Tête de fichier (comme dans MyHeader.hpp) et un namespace
dans c++
?
- C n'a pas d'espaces de noms.
Vous devez vous connecter pour publier un commentaire.
Fichiers d'en-tête sont des fichiers stockés dans le système de fichiers, référencé par nom de fichier, et
#include
'd dans d'autres fichiers (au moins, en C/C++ ou d'autres langages à l'aide de la M4 macro du préprocesseur). Fichiers d'en-tête généralement, les morceaux de code qui sont interdépendantes les unes des autres parties de la même élément spécifique ensemble. Par exemple, un jeu peut avoir un fichier d'en-tête pour l'ensemble de son rendu graphique.Espaces de noms, d'autre part, sont un élément de la langue de programmation - ils n'existent pas comme un objet de système de fichiers, mais plutôt comme une désignation dans le code de dire au compilateur que certaines choses sont à l'intérieur de cet espace de noms. Les espaces de noms généralement, les interfaces (les fonctions, les classes/les structures, types) de même (mais pas nécessairement interdépendants) des éléments. Par exemple, le
std
espace de noms en C++ contient l'ensemble de la Bibliothèque Standard de fonctions et de classes.Savoir ce qui est le fichier d'en-Tête, vous avez besoin de connaître le sens de la "déclaration".
Pour le placer dans des mots simples, en C/C++, la compilation se passe dans la source de manière. Si j'ai un A.cpp et à l'intérieur, j'utilise une fonction foo(), qui sera défini quelque part d'autre, j'ai besoin de dire au compilateur: "Hé, je suis en utilisant foo(), même si vous ne voyez pas qu'il est défini nulle part dans ma source, ne vous inquiétez pas, il est défini dans une autre source". Ils façon de dire compilateur à ce sujet est en "déclarant" foo() dans A.cpp.
Si je suis l'auteur de foo(), tout le monde qui utilisent foo() a besoin d'écrire la déclaration
void foo();
dans leur fichier source. Il aura beaucoup de duplication et de sens du travail. Et il est donc difficile pour moi de dire au gars que "l'utilisation" foo() pour avoir une déclaration correcte. Par conséquent, comme l'auteur de foo(), j'écris un fichier, contenant la déclaration pour l'utilisation de foo(), et de les distribuer afin que les gens peuvent simplement "importer" le contenu d'un fichier à leur source. Le fichier que je suis la distribution est fichier d'en-Tête. L'action de l'importation est #include en C/C++. Oui, #include n'est rien, mais d'insérer le contenu du fichier inclus à la place de #include.
Espace de noms est une autre histoire. Pour faire court, vous pouvez penser qu'il est "vrai" nom de la fonction/classe etc. par exemple, si je fais
La classe n'est pas vraiment le nom de Bar, c'est le "vrai" nom est en fait FOO::Bar.
C++ fournit une certaine façon de vous sauver en tapant le long de nom réel, par "l'aide".
Un en-tête de fichier est un fichier qui est destiné à être compris par les fichiers source. Ils contiennent généralement des déclarations de certaines classes et de fonctions.
Un espace de noms de code permet de classer les identificateurs. Qui est, des classes, des fonctions, etc. peut être placé à l'intérieur d'un espace de noms, en gardant les séparer des autres classes qui ne sont pas liés. Par exemple, en C++ tout à partir de la bibliothèque standard est dans le
std
espace de noms.En commun l'homme language (langue), fichier d'en-Tête devrait être unique fichier sur le système de fichiers et espace de noms couvrant un ou plusieurs fichiers.
c'est à dire HeaderFile est chose physique et l'espace de noms est chose logique.
en apprendre plus sur eux ici http://en.wikipedia.org/wiki/Namespace et http://en.wikipedia.org/wiki/Header_file
Espace de noms est un nouveau concept de "ansi c++" pour définir des identificateurs qui sont fréquemment utilisées dans votre programme.
En-tête de fichier est un fichier source qui prend en charge votre programme en réutilisant fiables et testés code d'où un gain de temps et d'efforts!!!!
Fichier d'en-tête est fondamentalement le système de fichiers, il est chose physique, il contient les classes et les fonctions si vous n'avez pas inclure l'en-tête de fichier et essayez d'effectuer une opération comme la conversion de chaîne en majuscules en minuscules, le calcul de la longueur de la chaîne vous avez besoin pour inclure le fichier d'en-tête string.h par lequel compiler comprendre que vous êtes l'exécution de l'opération sur la chaîne
Et lors de l'exécution de code, il va lien avec la bibliothèque correspondante dans lesquelles ces fonctions résident
Sur l'autre main de l'espace de noms est une partie de programme, il est logique, il est conçu pour fournir un moyen de garder un ensemble de nom distinct des autres. Le nom de la classe déclarée dans un espace de noms n'est pas en conflit avec le même nom de classe déclarée dans un autre . Tous les espaces de noms résident .net framework bibliothèque de classe qui est énorme collection de la hiérarchie des espaces de noms. Chacun des espaces de noms contient des classes, structures, interfaces, de l'énumération, les délégués ...etc...
Espace de noms est de nouveau la parole à headerfile. Pour faire de nouvelles versions disponibles.