Solution de l’exercice 7.5

Il suffit d’envisager une première classe exemple avec un opérateur d’affectation redéfini, puis une seconde classe autre, contenant un membre exemple ex. Dans ce cas, dans l’ancienne version, une affectation au1 = au2 recopiait en bloc les deux objets, donc recopiait en bloc les membres ex. Dans la nouvelle version, cette affectation provoquera, entre autres, un appel de exemple::operator=(au1.ex, au2.ex), ce qui provoquera une copie correcte des membres ex. Ce comportement est préférable car, dans l’ancienne version, il fallait penser à redéfinir l’opérateur d’affectation pour toutes les classes contenant des membres pour lesquels cet opérateur avait été redéfini. Ce n’est plus nécessaire désormais.

L’ancien comportement était plus rapide, mais source d’erreurs ; il posait aussi des problèmes avec l’héritage (voir chapitre 8).


Retour au texte.