operateur [] : distinguer lecture et affectation
Le
Dominique MICOLLET

Bonjour,
Suite à mon précédent article fort mal titré "Tableau en l_value ou r_value
pour mise à jour d'instance", Marc ESPIE m'a suggéré une excellente piste
puisque la connaissance des mots clefs idoines m'a permis de trouver sur
Internet :
http://www.cplusplus.com/forum/general/88839/
Le code proposé fonctionne très bien, et semble devoir faire ce que j'en
veux.
Par contre, je ne comprends pas comment il fonctionne.
À l'évidence, pendant, l'execution T[5] en ligne 39 fait appel à l'operateur
de la ligne 32, et T[5] de la ligne 36 fait appel à l'opérateur de la ligne
33.
Ma question est alors : pourquoi ?
Si quelqu'un peut éclairer ma lanterne (ou me rediriger vers une
explication)
Cordialement
Dominique
Suite à mon précédent article fort mal titré "Tableau en l_value ou r_value
pour mise à jour d'instance", Marc ESPIE m'a suggéré une excellente piste
puisque la connaissance des mots clefs idoines m'a permis de trouver sur
Internet :
http://www.cplusplus.com/forum/general/88839/
Le code proposé fonctionne très bien, et semble devoir faire ce que j'en
veux.
Par contre, je ne comprends pas comment il fonctionne.
À l'évidence, pendant, l'execution T[5] en ligne 39 fait appel à l'operateur
de la ligne 32, et T[5] de la ligne 36 fait appel à l'opérateur de la ligne
33.
Ma question est alors : pourquoi ?
Si quelqu'un peut éclairer ma lanterne (ou me rediriger vers une
explication)
Cordialement
Dominique
Dominique MICOLLET wrote:
Je me réponds à moi même : il n'y a jamais d'appel à l'opérateur de la ligne
32.....
Cordialement
Dominique
Ca ne se produit pas dans le cadre de l'exemple, mais si tu veux pouvoir
jouer avec un const test, il te faut un operateur const !
Ceci dit, ca ressemble a un exemple simplifie derive d'une classe template,
parce que la, dans ce cas precis, j'aurai plus tendance a prototyper
en
int operator[] (std::size_t i) const { return x[i]; }
(vu que ca ne coute "rien" de passer des int par valeur, alors que ca
peut etre payant sur un type T arbitraire)