exemple, la signification de += pour une classe ne peut en aucun cas être déduite de la
significaiton de + et de = pour cette même classe.
Cas particuliers
Les opérateurs [], (), ->, new et delete doivent obligatoirement être définis comme
fonctions membre.
Les opérateurs = (affectation) et & (pointeur sur) possèdent une signification prédéfinie
pour les objets de n’importe quel type classe. Cela ne les empêche nullement d’être
surdéfinis. En ce qui concerne l’opérateur d’affectation, on peut choisir de transmettre
son unique argument par valeur ou par référence. Dans le dernier cas, on ne perdra pas
de vue que le seul moyen d’autoriser l’affectation d’une expression consiste à déclarer
cet argument constant.
La surdéfinition de new, pour un type classe donné, se fait par une fonction de
prototype :
void * new (size_t)
Elle reçoit, en unique argument, la taille de l’objet à allouer (cet argument sera généré
automatiquement par le compilateur, lors d’un appel de new), et elle doit fournir en
retour l’adresse de l’objet alloué.
La surdéfinition de delete, pour un type donné, se fait par une fonction de prototype :
void delete (type *)
Elle reçoit, en unique argument, l’adresse de l’objet à libérer.
Tableau récapitulatif
Les opérateurs surdéfinissables en C++ (classés par priorité
décroissante)
Pluralité
Opérateurs
Associativité
Binaire
()
(3)
[]
(3)
->
(3)
->
Unaire
+ - ++
(5)
-(5)
! ~ * &
(1)
new
(4)(6)
new[]
(4)(6)
delete
(4)(6)
delete[]
(4)(6)
(cast)
* / %
->
Binaire
+ ->
197
significaiton de + et de = pour cette même classe.
Cas particuliers
Les opérateurs [], (), ->, new et delete doivent obligatoirement être définis comme
fonctions membre.
Les opérateurs = (affectation) et & (pointeur sur) possèdent une signification prédéfinie
pour les objets de n’importe quel type classe. Cela ne les empêche nullement d’être
surdéfinis. En ce qui concerne l’opérateur d’affectation, on peut choisir de transmettre
son unique argument par valeur ou par référence. Dans le dernier cas, on ne perdra pas
de vue que le seul moyen d’autoriser l’affectation d’une expression consiste à déclarer
cet argument constant.
La surdéfinition de new, pour un type classe donné, se fait par une fonction de
prototype :
void * new (size_t)
Elle reçoit, en unique argument, la taille de l’objet à allouer (cet argument sera généré
automatiquement par le compilateur, lors d’un appel de new), et elle doit fournir en
retour l’adresse de l’objet alloué.
La surdéfinition de delete, pour un type donné, se fait par une fonction de prototype :
void delete (type *)
Elle reçoit, en unique argument, l’adresse de l’objet à libérer.
Tableau récapitulatif
Les opérateurs surdéfinissables en C++ (classés par priorité
décroissante)
Pluralité
Opérateurs
Associativité
Binaire
()
(3)
[]
(3)
->
(3)
->
Unaire
+ - ++
(5)
-(5)
! ~ * &
(1)
new
(4)(6)
new[]
(4)(6)
delete
(4)(6)
delete[]
(4)(6)
(cast)
->
Binaire
+ ->
197
