Maître de Conférences en Informatique à l'Université d'Angers
Ce site est en cours de reconstruction certains liens peuvent ne pas fonctionner ou certaines images peuvent ne pas s'afficher.
Le mot clé this représente l'adresse de la classe et est utilisé à l'intérieur d'une des méthodes de la classe.
L'expression *this représente une référence de la classe.
Une référence est en quelque sorte un pointeur dont l'adresse est non modifiable mais qui utilise une syntaxe différente de celle du pointeur.
Note 1: on peut déclarer un pointeur sans qu'une adresse lui soit associée, par contre lorsque l'on déclare une référence une variable du type référencé doit être affecté à la référence.
Note 2: attention, l'opérateur & possède une signification particulière pour les pointeurs ou pour les références.
Dans l'exemple suivant la fonction function_1 tente de soustraire la valeur maximum d'une classe à la valeur minimum, les instances des classes étant passées par référence. On tente donc d'échanger les références pour que la référence smallest (resp. biggest) pointe sur la valeur minimum (resp. maximum).
Cependant cela ne peut pas fonctionner car l'instruction smallest = const_cast(y); revient à écrire x=y ou en d'autres termes à réaliser l'affectation a1 = a2
Pour pallier à ce problème il faut échanger les valeurs des classes et non leurs références comme dans function_2.