2011-07-20 3 views

Répondre

5

Tout d'abord, l'opérateur += est un opérateur d'affectation (affectation composée). Son comportement est cependant équivalent à y = y + x combinaison (sauf y est évaluée une seule fois).

En second lieu, quand il est utilisé comme opérande de l'opérateur d'addition (y compris l'ERS de += comme dans votre exemple) x participe à l'expression en tant que rvalue, par exemple, il est implicitement soumis à ce qu'on appelle lvalue à rvalue conversion. Cette conversion supprime immédiatement const, car les valeurs de type hors classe (int dans votre cas) ne peuvent pas être qualifiées pour le certificat de cv.

+0

Merci, exactement le genre d'explication que je cherchais. –

0

Fait implicitement, puisque vous n'allez pas changer x.

0

Il n'est pas nécessaire de supprimer const si x est utilisé uniquement comme extrait donné.

Le modificateur const marque une variable comme contenant des données en lecture seule. Si le compilateur voit que vous le modifiez, il se mettra en colère et signalera une erreur. Pour toutes les autres utilisations, const est supprimé.

Dans votre cas, vous ne modifiez pas x donc il n'est pas nécessaire de retirer const.

+0

L'exécution peut se fâcher si vous essayez de modifier 'x' après avoir enlevé' const'. :) – UncleBens

Questions connexes