défaut », qui recopie les différents membres de l’objet. Si certains de ces membres
sont eux-mêmes des objets, la recopie sera réalisée par appel de son propre
constructeur par recopie (qui pourra être soit un constructeur par défaut, soit un
constructeur défini dans la classe correspondante).
Dans les très anciennes versions (antérieures à 2.0), la recopie se faisait de façon
globale ; autrement dit, la « valeur » d’un objet était reportée (bit par bit) dans un autre,
sans tenir compte de sa structure. Les choses étaient alors relativement peu
satisfaisantes...
Les tableaux d’objets
Si point est un type objet possédant un constructeur sans argument (ou, situation
généralement déconseillée, sans constructeur), la déclaration :
point courbe [20] ;
crée un tableau courbe de 20 objets de type point en appelant, le cas échéant, le
constructeur pour chacun d’entre eux. Notez toutefois que courbe n’est pas lui-même un
objet.
De même :
point * adcourbe = new point [20] ;
alloue l’emplacement mémoire nécessaire à vingt objets (consécutifs) de type point, en
appelant, le cas échéant, le constructeur pour chacun d’entre eux, puis place l’adresse
du premier dans adcourbe.
La destruction d’un tableau d’objets se fait en utilisant une syntaxe particulière de
l’opérateur new. Par exemple, pour détruire le tableau précédent, on écrira :
delete [] adcourbe ;
En théorie, on peut compléter la déclaration d’un tableau d’objets par un initialiseur
contenant une liste de valeurs (elles peuvent éventuellement être de types différents).
Chaque valeur est alors transmise à un constructeur approprié. Ces valeurs doivent être
constantes pour les tableaux de classe statique ; il peut s’agir d’expressions pour les
tableaux de classe automatique. On peut ne pas préciser de valeurs pour les derniers
éléments du tableau.
167
Précédent

- 168/398

Suivant