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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Dominique MICOLLET
Le #26180752
Rebonjour,

Dominique MICOLLET wrote:
À 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 ?


Je me réponds à moi même : il n'y a jamais d'appel à l'opérateur de la ligne
32.....

Cordialement

Dominique
espie
Le #26181172
In article Dominique MICOLLET
Rebonjour,

Dominique MICOLLET wrote:
À 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 ?


Je me réponds à moi même : il n'y a jamais d'appel à l'opérateur de
la ligne
32.....




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)
Publicité
Poster une réponse
Anonyme