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
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
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"![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager