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 :

A propos des instances


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Developpeur Couleur-Vision / Système embarqué
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur Couleur-Vision / Système embarqué

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 17
    Points
    17
    Par défaut A propos des instances
    Bonjour tout le monde !

    Même si j'ai pu avancer bourrinement sur C++ sans savoir ça, je découvre les instances et quelque-chose m'intrigue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void fonc1() {
    /.../
    Objet o;
    /.../
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void fonc2() {
    /.../
    Objet O();
    /.../
    }
    Je sais que o est l'instance et MyObject, mais qu'en est t'il de O() ? Comme il y a les parenthèses, je me dis qu'il y a donc probablement des variables et que ce sont en réalité ce qu'il y a dans ces parenthèses qui sont des instances, non ? (Bon, les constructeurs de MyObject seront appellé par défaut, mais ce n'est pas ma question ici ^^" ) .

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    O déclare un prototype qui ne prend aucun paramètre et retourne un Objet.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Developpeur Couleur-Vision / Système embarqué
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur Couleur-Vision / Système embarqué

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Bousk Voir le message
    O déclare un prototype qui ne prend aucun paramètre et retourne un Objet.
    Okey ! donc, comme il retourne un objet, O est forcément une instance ?

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Non, c'est un prototype de fonction, pas une variable, ni une instance. C'est une erreur courante qui porte le nom de MVP (Most Vexing Parses).

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Citation Envoyé par Batfly Voir le message
    Je sais que o est l'instance et MyObject, mais qu'en est t'il de O() ? Comme il y a les parenthèses, je me dis qu'il y a donc probablement des variables et que ce sont en réalité ce qu'il y a dans ces parenthèses qui sont des instances, non ? (Bon, les constructeurs de MyObject seront appellé par défaut, mais ce n'est pas ma question ici ^^" ) .
    Comme la syntaxe est du type type nom[...];, tu es entrain de définir 1 variable (ici o).

    Ce qui est assez confusant en C++, c'est l'appel du constructeur :
    • soit tu ne précises pas le constructeur, et celui par défaut (s'il existe) sera appelé : Objet o;
    • soit tu précises le constructeur, et même celui par défaut (sans paramètres) : Objet o( /* ... */ );
    • soit tu fais 1 copie, mais il faut que le constructeur de recopie existe : soit 1 autre variable Objet o = other_o; soit 1 appel fonction Objet o = get_o(); soit (mais pas sûr) Objet o = Objet( /* ... */ );


    Édit : depuis le C++11 (C++ moderne) il y a la syntaxe {} appelée "uniform initialization" avec ces subtilités (notamment avec le type std::array).
    Et effectivement tu peux tomber sur le problème "Most vexing parse", puisque le compilateur ne sait pas faire la distinction avec 1 prototype de fonction

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

Discussions similaires

  1. Aide a propos des TMenuEdit
    Par scooper dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/05/2004, 15h39
  2. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03
  3. A propos des 'File management Functions' de Windows
    Par znaidi dans le forum Windows
    Réponses: 3
    Dernier message: 01/04/2003, 16h01
  4. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22

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