Je comprends plus la surcharge des opérateurs, à l'exception des opérateurs d'accès des membres ->
, .*
, ->*
etc.
En particulier, qu'est-ce qui est passé à ces fonctions d'opérateur et que faut-il renvoyer?
Comment la fonction d'opérateur (par exemple operator->(...)
) sait-elle à quel membre il fait référence? Peut-il savoir? A-t-il même besoin de savoir?
Enfin, y a-t-il des considérations const à prendre en compte? Par exemple, lorsque vous surchargez quelque chose comme operator[]
, vous aurez généralement besoin à la fois d'une version const et non const. Les opérateurs d'accès aux membres nécessitent-ils des versions const et non const?
const
et les non- const
versions de operator->
ne sont pas obligatoires , mais fournir les deux peut être utile.
->*
et .*
. En fait, il ne les mentionne même pas! Je pense qu'ils sont trop rares pour être dans une FAQ, mais je serais heureux de lier cette question à la FAQ. Veuillez ne pas fermer cela comme une dupe de la FAQ!