Le fichier d'en-tête de classe C modèle de

Le fichier d'en-tête de classe C modèle de

Ceci est mon troisième dans un blog sur les fichiers d'en-tête, je ne pensais pas que je suis monté sur une fosse géante.

Nous savons tous que pour déclarer un membre de la classe dans le fichier d'en-tête, implémenté dans le fichier source.

Mais écrire aujourd'hui les structures de données de travail, dans le fichier d'en-tête (Stack.h) définit une pile de classe de modèle dans le fichier source (Stack.cpp) pour atteindre les fonctions correspondantes. Mais le compilateur, mais la vie et la mort, comment changer la façon dont ne pouvait pas passer.

On a constaté que la classe de modèle non seulement dans les déclarations de fichiers d' en- tête, doit être mis en œuvre dans le fichier d' en- tête.

Il est impossible d'écrire simplement une classe de modèle dans un fichier cpp séparés et compiler le réaliser. Si quelqu'un dit que vous pouvez, alors il est sûrement une façon de mimer un fichier cpp séparé. En fait, si vous envisagez d'écrire une bibliothèque de modèles et les fichiers d' en- tête à importer, et cacher la mise en œuvre, il était impossible.

Pourquoi?

Parce que le fichier d'en-tête est compilé jamais, pré-traitement uniquement. Ensuite, avant le code correspondant terminé aux fichiers cpp de compilation réels sont fusionnés. C ++ dans l'espace occupé par chaque objet, il est temps de compilation est déterminée. Lorsque la classe de modèle n'a pas le type de données entrantes, le compilateur ne peut pas connaître la taille des objets dans l'espace occupé par le modèle de classe.

Par conséquent, au cours des fichiers d'en-tête et la source prévernis de la liaison, le compilateur ignore complètement l'espace fichier source modèle de classe, mais il a besoin de compiler les fichiers sources. Donc, il ne peut pas le compiler.

Alors rappelez - vous, quand le seul modèle réel de classe est utilisé, le savoir du compilateur quel type de modèle est passé, comment les besoins beaucoup d'espace à allouer.

Modèle implémentation de la classe, si de types de données spécifiques, il est absolument impossible de compilation séparée. Sans parler des déclarations dans les fichiers d'en-tête, cette méthode indésirable réalisée dans le fichier source.

Donc, réaliser tous classe modèle doit écrire dans les fichiers d'en-tête!

Bien sûr, il peut maintenant être déclaré dans le fichier d'en-tête de classe, réalisé en dehors des accolades.

À moins que vous voulez dans le fichier principal, le jeu #include « xxxx.cpp » opération magique.

Je suppose que tu aimes

Origine www.cnblogs.com/scyq/p/12507105.html
conseillé
Classement