IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Probleme comprehension du passage par reference


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Probleme comprehension du passage par reference
    oh grandes ames du dimanche matin qui ne regardent ni telefoot ni la messe! J'ai un probleme je ne comprends pas tres bien le passage par reference, alors j'aurais besoin d'une petite aide svp!

    En ce moment je suis en train de parcourir apprendre le c++ aux editions eyrolles et le web dont developpez.com mais je n'ai pas trop de reponses a mes questions mais peut etre que mes questions sont stupides aussi et que j'ai manque un episode!!

    ce que je ne comprends pas c'est ca :

    une fonction du style

    void pff(const int &a)

    ensuite

    main()
    float x;
    pff(x);

    Je ne comprends pas pourquoi cet appel a pff(x) est autorise!!

    Ce que j'ai compris mais peut etre il est la le probleme:
    Quand on appelle une fonction le processus alloue de la memoire a celle ci. Sur la pile a l'adresse ou est stockee la variable muette 'a' on doit avoir l'adr de x qui va faire reference a x ! Ce qui evite les recopies d'objets encombrants.Or ici x est un float

    et corrigez moi si je me trompe: void pff(const int &a)
    veut dire que j'ai une fonction pasfutefute qui prend en argument une reference a une constante de type int .

    ... Que pasa?

    J'ai une autre question :

    comment traduit on en langage courant:

    const & int
    et
    const int &

    Merci d'avance pour ceux qui vont m'aider a paser la page 112 de mon bouquin

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    Un référence en paramètre de fonction, j'ai tendance à considérer cela comme un pointeur déguisé, à une exception près, pour les temporaires non-nommés.

    Et là, tu es justement tombé sur cette exception.

    En fait, ce code:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void pff(const int &a);
     
    int main() {
    	float x;
    	pff(x);
     
    	return 0;
    }
    Équivaut à celui-ci:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void pff(const int &a);
     
    int main() {
    	float x;
    	{
    		int __tmp1 = x;
    		pff(__tmp1);
    	}
     
    	return 0;
    }
    C'est d'ailleurs la raison pour laquelle tu aurais une erreur de compilation si la référence était non-constante: Les références non-constantes vers des temporaires non-nommés sont interdites, car ce qu'elles permettent de modifier n'existe plus après l'appel de fonction. Dans notre exemple, avec une référence non-constante, on pourrait modifier __tmp1, mais pas x.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta reponse rapide, et j'essairai de presenter comme toi la prochaine fois!!

    Enfin la derniere question je voudrai avoir une traduction en langage simple de

    et

    C'est pour savoir dans quel sens on doit le lire...

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    • const & int n'existe pas à ma connaissance.
    • const int & est plus l'exception à la règle générale, je vais y revenir.
    • int const & est la règle générale, comme les pointeurs: ça se lit de droite à gauche, en anglais: "reference to constant int".

    La règle générale appliquée à un double-pointeur: int const * const * const, lu de droite à gauche, donne "constant pointer to constant pointer to constant int".

    Quant à l'exception, elle est assez simple: Elle dit tout simplement qu'un const tout à gauche qualifie le type juste à côté.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Super ca je vais pouvoir passer a la page 113!!! Mille mercis medinoc

Discussions similaires

  1. Passage par reference
    Par Seth77 dans le forum Langage
    Réponses: 38
    Dernier message: 03/09/2008, 17h38
  2. [debutant(e)]passage par reference
    Par kass28 dans le forum Débuter
    Réponses: 4
    Dernier message: 27/07/2007, 17h56
  3. Probleme d'un passage par reference.
    Par mego dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2007, 16h41
  4. Probleme sur le passage par reference
    Par schnito dans le forum Langage
    Réponses: 10
    Dernier message: 02/02/2006, 16h50
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo