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 :

le constructeur en c++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mai 2012
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 18
    Par d�faut le constructeur en c++
    bonjour,
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class personne{
    	private :
    		int age;
     
    		char sexe;
     
    		float taille;
     
    	public :
    		personne(int,char,float);
     
    };
     
    personne::personne(int age, char sexe, float taille){
    	this->age = age;
     
    	this->sexe = sexe;
     
    	this->taille = taille;
     
    }
    � quoi �a sert "this->age = age"
    mercii

  2. #2
    Membre chevronn�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Sant�

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par d�faut
    Bonjour,
    La prochaine fois, pense � utiliser les balises [code] autour de ton code pour le rendre plus lisible.
    Pour r�pondre � ta question, je t'en pose deux autres :
    1. � quoi peut faire r�f�rence age dans le constructeur ?
    2. que ce passerait-il si tu avais �crit age = age ?

  3. #3
    Membre � l'essai
    Homme Profil pro
    Ing�nieur t�l�com
    Inscrit en
    F�vrier 2011
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur t�l�com

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 6
    Par d�faut
    La syntaxes que tu utilises pour tes membres priv�s de classe est dangeureuse car tu n'es pas capable de les diff�rencier de param�tres de m�thodes o� de variables temporaires. Une bonne habitude est �galement de commencer par une majuscule le nom de tes classes.

    Une syntaxe commune est de pr�fix� par m_ tes variables membres (m comme member).

    Ton code deviendrais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class Personne
    {
      private :
        int    m_age;
       char  m_sexe;
       float  m_taille;
      public :
        Personne(int,char,float);
    };
     
    Personne::Personne(int age, char sexe, float taille)
      : m_age(age)
      , m_sexe(sexe)
      , m_taille(taille)
    {
    }
    Le this dans donc code permet de faire explicitement r�f�rence aux diff�rentes membres de ta classe. Le pr�fix par m_ est de mon point de vu plus facile � utiliser.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2013
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par d�faut
    Pourquoi s'emmerder quand

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class Personne
    {
      private :
        int    age;
       char  sexe;
       float  taille;
      public :
        Personne(int,char,float);
    };
     
    Personne::Personne(int age, char sexe, float taille)
      : age(age)
      , sexe(sexe)
      , taille(taille)
    {
    }
    conviendrait tout aussi bien ?

    L'utilisation du m�me nom pour les param�tres de cr�ation de l'instance et des membres de l'instance est tout � fait possible et ne pr�te pas � confusion selon moi. Il est au contraire tr�s clair que chaque param�tre du constructeur est mapp� 1-1 avec l'attribut de l'instance.

    Pour ce qui est des membres de l'instance, libre � chacun de d�finir getters et setters si besoin est, mais prefixer chaque membre par m_, on se croirait en Hongrie. Quitte � pr�fixer, autant pr�fixer par this->, qui est explicite et natif au langage.

  5. #5
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    En fait, la bonne fa�on de faire est le code de banche:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    Personne::Personne(int age, char sexe, float taille)
      : age(age)
      , sexe(sexe)
      , taille(taille)
    {
    }
    le m_ est un peu "old-school". Aujourd'hui on pr�f�re soit ne rien mettre, soit ajouter un underscore � la fin de la variable membre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    class Personne
    {
       int   age_;
       char  sexe_;
       float taille_;
    Mais en fait, les raisons valables pour identifier une variable membre le sont de moins en moins (valables), puisque les paradigmes modernes encouragent � valider les variables membres le plus t�t possible, id�alement dans la liste d'initialisation du constructeur. Par cons�quent, la confusion entre un param�tre de fonction et une variable membre ne se pose jamais puisqu'on utilise toujours les variables membres.

Discussions similaires

  1. [Reflection] Récupérer un constructeur ayant un paramètre int
    Par narmataru dans le forum API standards et tierces
    R�ponses: 2
    Dernier message: 09/07/2004, 09h53
  2. [VB6]Déclaration d'un Constructeur Spécialisé
    Par TagadaTsoin dans le forum VB 6 et ant�rieur
    R�ponses: 21
    Dernier message: 26/05/2004, 14h09
  3. [Constructeur]Pb avec la surcharge d un constructeur
    Par cmoulin dans le forum Langage
    R�ponses: 3
    Dernier message: 26/04/2004, 09h29
  4. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    R�ponses: 8
    Dernier message: 03/02/2004, 12h52
  5. pb constructeurs classes d�rivant classe abstraite
    Par Cornell dans le forum Langage
    R�ponses: 2
    Dernier message: 10/02/2003, 19h02

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