Les modèles en ligne signifient-ils quelque chose ?
Bien que les modèles soient définis dans les en-têtes, l'utilisation du mot-clé en ligne avec eux a une importance en raison du potentiel optimisations du compilateur.
Compilateur en ligne Gestion
Les compilateurs modernes peuvent certainement déterminer quand l'intégration d'une fonction est bénéfique. Cependant, le mot-clé inline a un objectif différent, spécifique aux modèles.
Sémantique d'intégration des modèles
Les modèles de fonctions existent sous deux formes : non entièrement spécialisées et entièrement spécialisées.
Exemple
Considérez ce qui suit code :
#include "tpl.h" int main() { f(5); // Non-fully specialized g(5); // Fully specialized return 0; }
tpl.h :
template<class T> void f(T); template<class T> inline T g(T);
La compilation de ce code entraîne une erreur pour g car il s'agit d'un modèle entièrement spécialisé et que l'inline n'a pas été spécifié.
Règle générale
Pour éviter toute confusion et garantir un comportement cohérent, suivez la règle de thumb :
Écrivez en ligne si vous le pensez vraiment.
En indiquant explicitement la nature en ligne des modèles, vous indiquez clairement au compilateur et aux autres développeurs que ces fonctions doit être intégré si possible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!