Programmation Orientée objet en C++
Chapitre 1. Vocabulaire
Chapitre 2. Principes de la programmation objet
Chapitre 3. Du C au C++
Chapitre 4. Les classes
4.1. Entête dans le .hpp
4.2. Définition dans le .cpp
4.3. Instanciation et Utilisation
4.4. Utilisation avec des pointeurs
4.5. Fonctions
4.6. Constructeurs/Destructeurs
4.7. Objets utilisés en paramètres, en retour
4.8. Adresse d'un objet : this
4.9. Constructeur par recopie
4.10. Objets contenant d'autres objets
4.11. Surcharge/Surdéfinition d'opérateurs
4.12. Héritage
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

4.4. Utilisation avec des pointeurs

La modification ne se fait bien évidemment que pour une instanciation de classe (un objet). Si l’on reprend l’exemple précédent, voici la manière de déclarer et d’utiliser l’objet c1.


#include « maClasse.hpp »

void main(void) {
maClasse *c1;
c1 = new maClasse ;
c1 ->modifierA(10) ; // on fixe la valeur de a à 10.
(*c1).b = 15 ; // plus élégant, c1->b=15
c1->.a = 12 ; // NON
delete c1 ;
}

 

Informations sur les pointeurs

Un pointeur se déclare de la manière suivante…

int * monPointeur ; // Pointeur sur un entier
maClasse *monPointeur ; // Pointeur sur une classe de type maClasse
void *monPointeur ; // Pointeur vers un objet non encore connu

…et s’initialise ainsi :

maClasse monObjet ; // Création d’un objet de type maClasse
maClasse *monPointeur ; // Création d’un pointeur sur un objet de type maClasse
monPointeur = &monObjet ; // le pointeur désigne l’objet monObjet

Il ne faut pas confondre le symbole & utilisé ici pour obtenir l’adresse de monObjet à celui utilisé pour obtenir une référence lors d’un passage de paramètres par exemple.

Les pointeurs peuvent également être utilisés (et c’est une utilisation fréquente) dans le cadre d’objets dynamiques avec les opérateurs new et delete.

maClasse *monPointeur ; // on déclare un pointeur sur une classe de type maClasse
monPointeur = new maClasse ; // On alloue la mémoire correspondant à maClasse
delete monPointeur ; // on libère cette mémoire

On peut également déclarer des tableaux d’objets :

maClasse *monPointeur ; // on déclare un pointeur sur une classe de type maClasse
monPointeur = new maClasse[10] ; //on alloue l’espace mémoire pour 10 objets de type maClasse
delete [10]monPointeur ; //on libère l’espace correspondant à ces 10 objets.

Afin d’accéder à l’objet pointé, on utilisera le pointeur de la manière suivante :

(*monPointeur).nomMéthode(…) ou
monPointeur->nomMéthode(…)

Si le pointeur fait référence à un tableau d’objets, il est possible d’accéder aux objets suivants en utilisant l’arithmétique des pointeurs :

maClasse *mp ;
monPointeur++ ; // le prochain accès à monPointeur se fera sur le deuxième objet du tableau
monPointeur[2] ; // désigne le 3ème objet.
mp = &monPointeur[4] ; //mp recevra l’adresse du 5ème objet. On y accédera par exemple avec (*mp).nomMéthode(…)


Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante