bonjour
j'ai remarqué que dans pas de code les classe on définie pas les fonction membres ( on définie pas ce qu'elle font) je me demande est ce que c'est préférence ou c'est une nécessité
merci
bonjour
j'ai remarqué que dans pas de code les classe on définie pas les fonction membres ( on définie pas ce qu'elle font) je me demande est ce que c'est préférence ou c'est une nécessité
merci
Tu dois sans doute parler des fichiers headers. Tu n'es pas obligé d'implémenter tes méthodes dans les headers. En règle générale, les fichiers headers servent à déclarer tes méthodes. Puis ces méthodes sont ensuite implémentées dans un fichier source. Voici un exemple qui sera sans doute plus parlant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Mon fichier.h class MaClasse { void MaFonction(); };Cela te permet de lire plus rapidement les méthodes que contient ta classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Mon fichier.cpp void MaClasse::MaFonction() { // le code de ta fonction }
Je te conseille ce lien qui peut t'intéresser :
http://c.developpez.com/faq/cpp/?pag...er_compilation
Salut,
Il y a une autre raison qui (peut) motiver le fait de ne pas définir une fonction lors de sa déclaration, meme si on peut trouver une raison de le faire
Pour ce qui concerne les fonctions déclarées comme virutelles, dans le cadre d'un héritage, par exemple, l'éditeur de liens va chercher la première fonction virtuelle non inline, pour créer la vtable (table des fonctions virtuelles) me semble-t-il
Or, quand, dans une classe, tu définis une fonction membre sous la forme de
toutes les fonctions (que ce soit le constructeur, le destructeur ou la fonction membre) sont considérées comme étant fonction inline, le destructeur et MaFonction étant, dans l'exemple, en plus virtuels
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Mere { public: Mere(){/*...*/} virtual ~Mere(){/*...*/} virtual void MaFonction(){/*...*/} /*...*/ };
D'un autre coté, il y a des cas pour lesquels il faut disposer de l'implémentation des méthodes, que ce soit directement au sein de la déclaration de la classe, ou par l'intermédiaire d'un fichier inclu apres la déclaration de la classe: ce sont tous les cas de classes "template"
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager