[CPP] références et rValue

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [CPP] références et rValue

Message  jonas le Dim 22 Mai 2011, 14:58

Question d'un exam précédent:
Code:

#include <iostream>
class Modif {
   public:
      Modif(int a) : val(new int(a)) {}
      int & get() const {
         -- *val;
         return *val;
      }
   private:
      int * val;
};

int main() {
   Modif g(5);
   int x = -- g.get() ;
   std::cout<< x << std::endl;
}

Le code compile.
Pourtant j'avais le souvenir qu'on ne pouvait pas référencer un rValue...
ou alors je m'embrouille ?


Dernière édition par jonas le Dim 22 Mai 2011, 19:39, édité 1 fois

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [CPP] références et rValue

Message  nvs le Dim 22 Mai 2011, 15:33

heu, elle est où la rvalue référencée ?
Code:
*val
est une lvalue (car val n'est pas const).


note que le code aurait été plus vicieux -- mais ce n'est pas le genre de la maison -- avec :
Code:
int & get() const {
        return --*val;
      }
qui compile car --int est une lvalue

... ou ...

Code:
int & get() const {
        return (*val)--;
      }
qui ne compile pas car int-- est une rvalue.

au passage :
Code:
int & get() const {
        return *val--;
      }
équivalent à
Code:
int & get() const {
        return *(val--);
      }
ne compile pas non plus... car get est qualifié const ! si on vire le const : comportement indéterminé...

[@mvhdl]
quid de ++int++ ?
[/@mvhdl]








Idea

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [CPP] références et rValue

Message  jonas le Dim 22 Mai 2011, 17:37

merci.

Va falloir que je revoie les rValue et les lValue apparemment Embarassed

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [CPP] références et rValue

Message  nvs le Dim 22 Mai 2011, 18:31

oui enfin, j'ai dit au cours que la différence r/lvalue entre i++ et ++i est un détail...






Razz

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [CPP] références et rValue

Message  Contenu sponsorisé Aujourd'hui à 07:14


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum