« Programmation C++/Les classes » : différence entre les versions
Contenu supprimé Contenu ajouté
m Formatage, ajout de code |
|||
Ligne 64 :
Les constructeurs et destructeur d'une classe sont des fonctions membres particulières de cette classe.
=== Constructeurs ===
* Lorsqu'on crée une nouvelle instance d'une classe, les données membres de cette instance ne sont pas initialisées par défaut. Un constructeur est une fonction membre qui sera appelée au moment de la création d'une nouvelle instance d'une classe. Il peut y avoir plusieurs constructeurs d'une classe avec différents paramètres qui serviront à initialiser notre classe. Le constructeur d'une classe A est appelé automatiquement lorsqu'on crée une instance en écrivant : ''A toto;'' ou encore ''A toto(6,9);''. Ils sont également appelés lorsqu'une instance est créée grâce à l'opérateur <
* Parmi les constructeurs, on retrouve une série de constructeurs particuliers:
** Le '''constructeur par défaut''': c'est le constructeur sans argument. Si aucun constructeur n'est présent explicitement dans la classe, il est généré par le compilateur.
Ligne 78 :
=== Destructeurs ===
Les destructeurs sont appelés lorsqu'une instance d'une classe doit être détruite. Cela arrive à la fin de l'exécution d'une fonction/méthode: si vous avez déclaré, localement à une fonction/méthode, un élément d'une classe A par ''A toto;'' alors à la fin de l'exécution de la fonction/méthode, le destructeur de la classe est appelé. Il est également appelé lorsqu'on détruit une instance grâce à <
<code>~A();</code>
Ligne 214 :
== Les opérateurs new et delete ==
Il est parfois intéressant de créer dynamiquement de nouvelles instances d'une classe. Cela s'avère indispensable lorsque vous manipulez certaines structures de données complexes. L'opérateur <
A* pointeur=new A; // Ou bien:
A* pointeur=new A();
Ligne 220 :
Si le constructeur de la classe A prend des arguments, la syntaxe devient:
A* pointeur=new A(''arguments'');
La variable <
La libération se fait en utilisant l'opérateur <
delete pointeur;
Ligne 689 :
=== Méthodes virtuelles ===
Dans l'exemple précédent, si l'on ajoute une autre méthode à la classe <
* Fichier '''VehiculeRoulant.h'''
Ligne 727 :
}
</source>
Alors si on utilise la méthode <
Pour que ce soit celle de la classe <
* Fichier '''VehiculeRoulant.h'''
Ligne 753 :
</source>
Le mot clé <
Il est possible d'accéder à une méthode précise de la table des méthodes virtuelles, en indiquant la classe de la méthode à appeler. Par exemple, pour appeler la méthode <
<source lang="cpp">
void Automobile::avancer()
Ligne 780 :
Par exemple, si l'on possède une classe décrivant un véhicule roulant, et une classe décrivant un navire, on pourrait créer une classe décrivant un véhicule amphibie qui hériterait des propriétés et méthodes de véhicule roulant et de navire.
L'héritage multiple peut poser des problèmes de définitions multiples de méthodes virtuelles. Supposons que l'on ait une classe <
<source lang="cpp">
class Base
Ligne 844 :
=== Syntaxe ===
<source lang="cpp"> virtual type nom_méthode(paramètres)=0;</source>
Une telle méthode définie uniquement dans une sous-classe est nécessairement virtuelle. Le mot-clé <
<source lang="cpp">type nom_méthode(paramètres)=0; // Méthode d'une sous classe encore abstraite
|