Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2505 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  references en cpp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

references en cpp

n°1419375
zbouirf
poukram et dre dans le pentu
Posté le 04-08-2006 à 04:15:08  profilanswer
 

Salut a tous ceux qui liront ce poste !
 
Je cherche a comprendre le fonctionnement précis des références en cpp, c'est a dire du petit signe & que l'on peut ajouter aux declarations ( genre int & i =23 ).
Et non pas le fonctionnement de ce meme signe pour récupérer l'adresse d'une variable ( genre int var = 23; int * i = &var; )
 
En fait si quelqu'un peut simplement m'indiquer ou je peux trouver l'info sur les normes officielles du cpp, ca me sera deja bien utile.
Sinon voici ma préoccupation :
 
voila la déclaration d'une petite classe pour illustrer :

Code :
  1. class essai
  2. {
  3. protected:
  4.  int i;
  5. public:
  6.  essai (){i=0;}
  7.  int & get () {return i;}
  8.  void print () {printf ("%i\n", i);}
  9. };


 
puis lorsque je fais :

Code :
  1. essai e;
  2. int var = e.get();
  3. var = 8;
  4. e.print ();


le resultat affiche est 0
 
lorsque je fais :

Code :
  1. essai e;
  2. int & var = e.get();
  3. var = 8;
  4. e.print ();


le resultat affiche est 8
 
La question est donc : le compilateur renvoie t'il tantot la variable par copie (dans le premier cas) dans la pile d'execution comme si la fonction ne renvoyait pas une réference mais bien la valeur (ce qu'il deciderait en voyant que la variable qui recoit la valeur de retour n'est pas une réference), et tantot renvoie t'il effectivement la réference (deuxieme cas, la variable qui recoit la valeur de retour est bien déclarée comme étant une réference) ?
Et dans ce second cas, une petite confirmation m'est necessaire : une réference, en langage machine ca n'existe pas (attention pas de méprise, une réference en cpp, c'est différent d'un pointeur). Dès lors, que fait le compilateur lorsqu'une réference doit etre renvoyée ? Il remplace partout la variable qui recoit la réference renvoyée par l'objet réferencé ( en assembleur, remplacer "var" par "essai::i" ) ?
Ma question a pour but de savoir si ca permet d'optimiser un peu les programmes en simplifiant le processus de retour d'une fonction.
 
Par ailleurs arretez moi si je dis une annerie, mais si c'est bien le cas, le seul moyen de faire ce genre d'optimisation mais d'empecher qu'on modifie la variable réferencée est de déclarer le type de retour de la fonction constant, genre : const int & get ();
 
Merci d'avance pour vos reponses.
 
Zbouirf

mood
Publicité
Posté le 04-08-2006 à 04:15:08  profilanswer
 

n°1419379
richou_
Posté le 04-08-2006 à 07:11:51  profilanswer
 

http://c.developpez.com/cours/
 
Regarde la peut être que tu trouveras ce que tu cherches :jap:

n°1419702
skelter
Posté le 04-08-2006 à 14:21:54  profilanswer
 

Citation :

La question est donc : le compilateur renvoie t'il tantot la variable par copie (dans le premier cas) dans la pile d'execution comme si la fonction ne renvoyait pas une réference mais bien la valeur (ce qu'il deciderait en voyant que la variable qui recoit la valeur de retour n'est pas une réference), et tantot renvoie t'il effectivement la réference (deuxieme cas, la variable qui recoit la valeur de retour est bien déclarée comme étant une réference) ?


 
il n'y a rien à comprendre  :??:  
 
tu peux initialiser une référence avec une référence ou une valeur, et tu peux construire un objet à partir d'une référence comme d'une valeur

Code :
  1. objet(const objet & )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  references en cpp

 

Sujets relatifs
pb references ADO Excel SQLPassage de références de tableaux dans l'url
Conseil sdd à adopter pour couples objet/références vers cet objetchar, signed char et unsigned char et les références
Références Croisées ?Probleme de references
Références croisées en C[Visual .Net] Références Vide sous SmartDevice Application
mettre des references dans une tableréférences, utilisation de sendAndLoad dans un constructeur
Plus de sujets relatifs à : references en cpp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR