Solution de l’exercice 7.1

Aucune fonction n’est appelée, puisque les opérateurs et le constructeur sont écrits en ligne. Le compilateur développe donc l’expression sous la forme :

fraction f;f.num = (1*(1*5)+(2*1)*1)*(3*1)-(1*8)*((1*5)*1);f.den = (3*1)*((1*5)*1);

à vous de le vérifier... Quant à la place mémoire occupée, c’est celle de f, soit huit octets. Si les fonctions n’étaient pas écrites en ligne, il y aurait treize appels de fonctions, dont neuf appels du constructeur, et la place mémoire occupée serait (transitoirement) égale à 8*9 octets, sans compter ceux occupés par f ; cependant cette place serait restituée à la fin du calcul par neuf appels du destructeur standard, correspondant aux neuf appels automatiques du constructeur.


Retour au texte.