"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Les fonctions membres en ligne peuvent-elles être implémentées dans un fichier .cpp ?

Les fonctions membres en ligne peuvent-elles être implémentées dans un fichier .cpp ?

Publié le 2024-11-18
Parcourir:482

 Can Inline Member Functions Be Implemented in a .cpp File?

Fonctions membres en ligne dans 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 se trouver 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 l'importance 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3