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(…)