Exercice 99
Énoncé
Considérer la classe suivante :
class complexe
{ double x, y ;
public :
complexe (double r=0, double i=0) ;
complexe (complexe &) ; // ou complexe (const complexe &)
} ;
Dans un programme contenant les déclarations :
complexe z (1,3) ;
void fct (complexe) ;
que produiront les instructions suivantes :
z = 3.75 ; // instruction 1
fct (2.8) ; // instruction 2
z = 2 ; // instruction 3
fct (4) ; // instruction 4
L’instruction 1 conduit à une conversion de la valeur double 3.75 en un complexe par appel
du constructeur à un argument (compte tenu des arguments par défaut), suivie d’une
affectation à z.
L’instruction 2 conduit à une conversion de la valeur double 2.8 en un complexe (comme
précédemment par appel du constructeur à un argument) ; il y aura ensuite création
d’une copie, par appel du constructeur par recopie de la classe complexe, copie qui sera
transmise à la fonction fct.
Les instructions 3 et 4 jouent le même rôle que les deux précédentes, avec cette seule
différence qu’elles font intervenir des conversions int --> complexe obtenues par une
conversion int --> double suivie d’une conversion double --> complexe.
235
Précédent

- 236/398

Suivant