Déclarations prospectives Flashcards
Qu’est-ce qu’une déclaration prospective (forward declaration) en C++ et pourquoi est-elle utile?
Une déclaration prospective consiste à indiquer au compilateur qu’un type de données existe sans fournir de détails sur ses méthodes ou attributs. Elle est essentielle pour résoudre les problèmes d’inclusion circulaire entre fichiers d’en-tête (.h). Par exemple, si les classes A et B s’incluent mutuellement, on peut utiliser class B; dans A.h au lieu de #include “B.h”.
Quelle est la syntaxe d’une déclaration prospective pour une classe?
La syntaxe est simplement class NomDeLaClasse;, sans accolades ni détails sur les méthodes ou attributs. Par exemple: class B; indique au compilateur que la classe B existe sans préciser sa structure.
Dans quelles situations peut-on utiliser une déclaration prospective au lieu d’inclure le fichier d’en-tête complet?
On peut utiliser une déclaration prospective quand:
Un objet est passé en paramètre ou retourné par référence (constante ou non)
Un objet est passé en paramètre ou retourné par pointeur
Dans ces cas, le compilateur n’a pas besoin de connaître les détails de la classe, seulement son existence.
Dans quelles situations est-il obligatoire d’inclure le fichier d’en-tête complet plutôt que d’utiliser une déclaration prospective?
Il est obligatoire d’inclure le fichier d’en-tête complet quand:
On hérite d’une classe
On appelle une méthode d’une classe (y compris un constructeur)
On passe en paramètre ou retourne un objet par valeur
Dans ces cas, le compilateur a besoin de connaître la structure complète de la classe.
Pourquoi est-il recommandé d’utiliser des déclarations prospectives chaque fois que c’est possible, même quand ce n’est pas absolument nécessaire?
L’utilisation de déclarations prospectives limite les dépendances entre fichiers d’en-tête, ce qui accélère le processus de compilation. Une modification dans un fichier d’en-tête force la recompilation de tous les fichiers qui l’incluent directement ou indirectement. En réduisant ces dépendances, on minimise le nombre de fichiers à recompiler après une modification, même anodine.