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!