Maison  >  Article  >  développement back-end  >  Puis-je définir des fonctions membres en ligne dans un fichier .cpp tout en conservant l'intégration ?

Puis-je définir des fonctions membres en ligne dans un fichier .cpp tout en conservant l'intégration ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 17:34:30311parcourir

 Can I Define Inline Member Functions in a .cpp File and Still Get Inlining?

Définition des fonctions membres en ligne dans le fichier .cpp

En C, les fonctions membres en ligne doivent idéalement être définies dans le fichier d'en-tête pour permettre au compilateur pour les intégrer lors de la compilation. Cependant, certaines situations peuvent nécessiter de placer l'implémentation en dehors de l'en-tête, comme les dépendances circulaires entre classes.

Dans l'exemple donné, la classe A inclut la classe B, qui à son tour inclut une déclaration directe de A. À éviter cette circularité, la fonction getA() de la classe B est définie dans B.cpp. Cela soulève la question : le compilateur sera-t-il toujours en ligne getA(), et si oui, quelle définition est prioritaire ?

Conformément à la FAQ C, la définition d'une fonction en ligne doit être placée dans un fichier d'en-tête pour celle-ci. pour être visible par tous les fichiers sources qui l'utilisent. Par conséquent, dans ce scénario, le compilateur n'intégrera pas getA(), sauf lorsqu'il est appelé dans B.cpp lui-même.

Les meilleures pratiques dictent que le mot-clé inline ne doit être utilisé qu'une seule fois, dans la définition de la fonction en dehors de la classe. corps. Par conséquent, tout mot-clé en ligne placé dans le fichier d'en-tête est redondant.

Malheureusement, il n'existe aucune méthode connue pour définir une fonction membre en ligne dans le fichier .cpp tout en garantissant son intégration par le compilateur.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn