Types dont on peut redéfinir les opérateurs

On ne peut redéfinir les opérateurs que pour les types structures, classes ou unions. Les autres en effet sont prédéclarés, avec des opérateurs fixés une fois pour toutes.

En particulier, on ne peut pas redéfinir les opérateurs pour les pointeurs ou les tableaux. Si l’on souhaite un type fonctionnellement équivalent en redéfinissant certains opérateurs, il faut créer une classe. Voici un exemple imaginable :

class intptr {     int *p;     public :     ....     friend int operator*(exempleptr);     }				int operator*(exempleptr ep) // déréférencement spécial {     // fait quelque chose de particulier ici }

Toutefois ce genre d’écriture est difficile et risqué, notamment à cause des problèmes de post- et pré-incrémentation (voir plus loin). Il est beaucoup plus fréquent de créer des classes équivalant à des tableaux (voir paragraphe sur l’opérateur []).

Tous les opérateurs sur les pointeurs sont redéfinissables (pour des classes), même -> et ->*. Notons toutefois que -> doit obligatoirement renvoyer un pointeur ou une classe.

Précédent Précédent Sommaire Sommaire Suivant Suivant