Les objets dynamiques
Ils sont créés par l’opérateur new, auquel on doit fournir, le cas échéant, les valeurs des
arguments destinés à un constructeur, comme dans cet exemple (qui suppose qu’il existe
une classe point possédant le constructeur point (float, float)) :
point * adp ;
.....
adp = new point (2.5, 5.32) ; // création d'un objet de type point, par
// appel d'un constructeur à deux arguments
Comme pour les variables ordinaires, on peut préciser un nombre d’objets, mais, des
restrictions apparaissent alors, qui portent sur le constructeur qu’il est possible
d’appeler (voyez ci-après la rubrique « tableaux d’objets »).
L’accès aux membres d’un objet dynamique est réalisé comme pour les variables
ordinaires. Par exemple, si point possède une méthode nommée affiche, on pourra
l’appeler par (*adp).affiche () ou encore par adp->affiche ().
Les objets dynamiques n’ont pas de durée de vie définie a priori. Ils sont détruits à la
demande en utilisant l’opérateur delete comme dans : delete adr. (Dans le cas d’un
tableau d’objets, la syntaxe sera différente, voir un peu plus loin.)
Construction d’objets contenant des objets membre
Une classe peut posséder un membre donnée qui est lui-même de type classe. En voici
un exemple. Si nous avons défini :
class point
{ float x, y ;
public :
point (float, float) ;
.....
} ;
nous pouvons définir une classe pointcol, dont un membre est de type point :
class pointcol
{ point p ;
int couleur ;
public :
pointcol (float, float, int) ;
.....
} ;
Dans ce cas, lors de la création d’un objet de type pointcol, il y aura tout d’abord appel
d’un constructeur de pointcol, puis appel d’un constructeur de point ; ce dernier recevra
165
Précédent

- 166/398

Suivant