}; } ;
A a ; // a est du type A
B b ; // b est du type B, dérivé de A
A * ada ; // ada est un pointeur sur des objets de type A
B * adb ; // adb est un pointeur sur des objets de type B
Il existe deux conversions implicites :
d’un objet d’un type dérivé dans un objet d’un type de base. Ainsi l’affectation a = b
est légale : elle revient à convertir b dans le type A (c’est-à-dire, en fait, à ne
considérer de b que ce qui est du type A) et à affecter ce résultat à a (avec appel, soit
de l’opérateur d’affectation de A si celui-ci a été surdéfini, soit de l’opérateur
d’affectation par défaut de A). L’affectation inverse b = a est, quant à elle, illégale ;
d’un pointeur sur une classe dérivée en un pointeur sur une classe de base. Ainsi
l’affectation ada = adb est légale, tandis que adb = ada est illégale (elle peut cependant
être forcée par emploi de l’opérateur de cast : adb = (B*) ada).
244
Précédent

- 245/398

Suivant