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

Langage C++ Discussion :

[débutant] POO en C++


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut [débutant] POO en C++
    Bonjour voici mon probleme.
    j'ai une classe CompteEpargne avec ses attributs taux, plafond qui hérite d'une classe Compte avec notament l'attribut DateCreation.

    Je voudrais savoir si lors de l'instanciation d'un CompteEpargne (je parle de l'appel du constructeur CompteEpargne) l'appel du constructeur de Compte sera appelé.

    En d'autres termes est-ce que je dois definir DateCreation dans le constructeur de CompteEpargne?

    Si non, à quel moment l'attribut DateCreation d'un objet CompteEpargne sera appelé?

    Je viens du C, j'espere que ma question est bien posée.

    Merci

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Lorsque tu instancieras un CompteEpargne, vu que CompteEpargne hérite de Compte, alors le constructeur de Compte sera appelé.
    Il ne faut pas oublier de transmettre les arguments qu'il faut au constructeur de Compte, sinon le compilateur ne sera pas content.

  3. #3
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    Je ne comprend pas comment je fais en pratique.

    pour l'instant mon constructeur de CompteEpargne prend 2 arguments (un pour le plafond , un pour le taux, alors que le constructeur pour Compte prend 5 argument (solde, date, num, proprietaire, adresse).

    à quel moment je passe les parametres manquants?

    Merci pour ta réponce.

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Ben il faut que le constructeur de CompteEpargne prenne 7 arguments :
    - 2 pour lui même, grâce auxquels il initialisera ses attributs.
    - 5 pour les donner au constructeur de Compte ...
    C'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CompteEpargne::CompteEpargne(int taux,int plafond,int solde,int date, int num, string proprietaire,string adresse) : taux_(taux),plafond_(plafond), Compte(solde,date,num,proprietaire,adresse) 
    {
    }

  5. #5
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    Merci

  6. #6
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu as compris?
    ?

  7. #7
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    ben je retourne devant mon compilateur demain en fait...

  8. #8
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Ok ... tiens au courant.
    Ils devraient installer des compilos C++ sur chaque ordi ...

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par Alp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CompteEpargne::CompteEpargne(int taux,int plafond,int solde,int date, int num, string proprietaire,string adresse) : taux_(taux),plafond_(plafond), Compte(solde,date,num,proprietaire,adresse) 
    {
    }
    Le constructeur du parent se met en premier normalement...
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Ah
    Désolé.
    Enfin, ça empêche pas d'appeler le constructeur hein

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Tout à fait
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    C'est écrit dans la norme de mettre l'initialisation des classes parentes avant celle des attributs de la class "courante" ?
    Par curiosité

  13. #13
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Non, mais c'est généralement le comportement voulu.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il me semble avoir lu dans un livre de C++ que quel que soit l'ordre dans lequel on met les initialiseurs, le VRAI ordre sera fixe, et ce sera celui des déclarations.
    Et il me semble aussi, (ou peut-être que j'ai bu) que gcc donne un warning si on place les initialiseurs dans un ordre différent...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre confirmé Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Par défaut
    Citation Envoyé par Médinoc
    Il me semble avoir lu dans un livre de C++ que quel que soit l'ordre dans lequel on met les initialiseurs, le VRAI ordre sera fixe, et ce sera celui des déclarations.
    si par vrai ordre, tu entends celui de la décalaration dans la classe alors tu as pu le lire chapitre 10.4.6 le langage C++ B.Stroustrup ed special 2001 version française notamment.

  16. #16
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    heureusement que j'ai pas mi tout de suite...

    Bon en tout cas ça répond à ma question. Merci.

  17. #17
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Médinoc
    Il me semble avoir lu dans un livre de C++ que quel que soit l'ordre dans lequel on met les initialiseurs, le VRAI ordre sera fixe, et ce sera celui des déclarations.
    Et la motivation de ça est simple : On doit détruire les objets dans l'ordre inverse de leur création. Comme il peut exister plusieurs constructeurs pour une classe, si on se basait sur l'ordre des initialisations pour construire les sous-objets, la façon de détruire un objet dépendrait du constructeur qui a été utilisé pour les construire, ce qui imposerait de tracker cette information complémentaire pendant toute la vie de l'objet et d'appeller le bon code de destruction, ce qui a un coût.

    Donc ordre de construction unique. Comment le spécifier ? Plutôt que de dire que l'un des conbstructeurs a la priorité (lequel ?), on se base sur l'ordre de déclaration.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Débutant POO: requête preparé
    Par moudjahidine dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/02/2014, 21h57
  2. Débutant : POO + BDD
    Par Shankara dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 24/02/2010, 16h17
  3. [POO] Débutant POO javascript
    Par dragonfly dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/10/2007, 20h59
  4. [Débutant] [POO] Problème d'héritage
    Par fire.stone dans le forum Langage
    Réponses: 3
    Dernier message: 30/09/2006, 23h21
  5. [POO] débutante dans les objets COM
    Par SandraG dans le forum Langage
    Réponses: 11
    Dernier message: 16/03/2006, 12h03

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