Maison > Article > développement back-end > Les fonctions membres en ligne peuvent-elles être implémentées dans un fichier .cpp ?
Fonctions membres en ligne en C : une plongée plus approfondie
Les fonctions membres en ligne sont déclarées dans la définition de la classe mais implémentées en dehors du corps de la classe. Bien qu'ils résident généralement dans le fichier d'en-tête, il peut y avoir des situations dans lesquelles placer l'implémentation dans l'en-tête n'est pas réalisable.
Considérez le scénario dans lequel la classe A inclut une instance de la classe B et la classe B déclare un membre en ligne. fonction getA() qui renvoie une instance de A. En raison d'une inclusion circulaire, nous sommes obligés de déplacer l'implémentation de getA() vers le fichier B.cpp.
La question se pose : le compilateur sera-t-il en ligne obtenirA() ? Selon la FAQ C, la définition d'une fonction en ligne doit être dans un fichier d'en-tête, sauf si elle est utilisée exclusivement dans un seul fichier .cpp. Dans notre cas, la définition est dans B.cpp, ce qui signifie que getA() ne sera pas intégré, sauf pour son utilisation dans B.cpp lui-même.
Concernant la signification des mots-clés en ligne, il est recommandé de n'utiliser que celle de la définition de fonction en dehors du corps de la classe pour les meilleures pratiques.
Quant à la recherche d'une approche alternative pour définir les fonctions membres en ligne dans un fichier .cpp, malheureusement, il n'y en a pas à notre connaissance. La définition doit résider dans un fichier d'en-tête pour que le compilateur puisse effectuer l'inline.
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!