Maison > développement back-end > C++ > Pouvez-vous intégrer des fonctions membres définies dans des fichiers .cpp ?

Pouvez-vous intégrer des fonctions membres définies dans des fichiers .cpp ?

DDD
Libérer: 2024-10-27 22:25:02
original
463 Les gens l'ont consulté

 Can You Inline Member Functions Defined in .cpp Files?

Placer la définition de fonction membre en ligne dans un fichier .cpp

Dans cet article, nous aborderons le dilemme de l'implémentation de fonctions membres en ligne dans des fichiers .cpp malgré la convention de placement dans les en-têtes.

Le problème vient de l'inclusion circulaire, comme le démontrent les extraits de code ci-dessous :

<code class="cpp">// File A.h
#include "B.h"

class A {
    B b;
};</code>
Copier après la connexion
<code class="cpp">// File B.h
#include "A.h" // forward declaration

class B {
    inline A getA();
};</code>
Copier après la connexion

En raison de la dépendance circulaire, l'implémentation de getA() doit être placé dans B.cpp :

<code class="cpp">// File B.cpp
#include "B.h"
#include "A.h"

inline A B::getA() {
    return A();
}</code>
Copier après la connexion

Le compilateur en ligne getA ?

Non, sauf si l'utilisation de getA() se fait dans B.cpp lui-même.

Importance des mots-clés en ligne

Le mot-clé en ligne dans la définition en dehors du corps de la classe est le plus significatif.

Manières alternatives de définir le contenu en ligne Fonctions membres dans les fichiers .cpp

Malheureusement, il n'existe pas d'approche alternative pour placer la définition d'une fonction membre en ligne dans son fichier .cpp. La norme exige que le compilateur voie la définition de la fonction partout où elle est appelée.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal