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 :

Constructeur et type réel d'objet


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Par défaut Constructeur et type réel d'objet
    Salut à tous,
    considérons le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct A
    {
        A(){ cout << "A()" << endl; }
        void f() { cout << "f()" << endl; }
    };
     
    int main(void)
    {
        A a();
        a.f();
     
        return 0;
    }
    Si je commente la ligne 10 correspondant à l'appel de la méthode f, le code compile parfaitement.
    1)Le message "A()" ne s'affiche pas, ainsi quel constructeur est appelé?, un constructeur par défaut généré automatiquement par le compilateur?

    2)Si maintenant je décommente la ligne 10, le code ne compile plus. Le compilateur m'affiche l'erreur suivante :
    request for member 'f' in 'a', which is of non-class type 'A()'

    Le code est facilement corrigible, mais j'aimerais savoir quel est ce comportement? est ce prévu par la norme?

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Oui, il est prévu par la norme que si on se trompe, on n'a pas le résultat attendu

    Tu ne construis pas un objet a de type A mais tu déclares ici une fonction a() qui renvoi un objet de type A. La syntaxe correcte est :
    Le reste en découle

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Par défaut
    merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par backlash Voir le message
    C'est la déclaration d'une fonction qui ne prend aucun argument et qui renvoie un objet A.

    Citation Envoyé par backlash Voir le message
    Si je commente la ligne 10 correspondant à l'appel de la méthode f, le code compile parfaitement.
    1)Le message "A()" ne s'affiche pas, ainsi quel constructeur est appelé?, un constructeur par défaut généré automatiquement par le compilateur?
    Aucun constructeur n'est appelé, car aucun objet A n'est construit.

    Citation Envoyé par backlash Voir le message
    2)Si maintenant je décommente la ligne 10, le code ne compile plus. Le compilateur m'affiche l'erreur suivante :
    request for member 'f' in 'a', which is of non-class type 'A()'
    Exact, puisque a est une fonction.

    Citation Envoyé par backlash Voir le message
    Le code est facilement corrigible, mais j'aimerais savoir quel est ce comportement? est ce prévu par la norme?
    Je pense qu'on peut dire que oui.

    EDIT : saperlipopette; grillé par gbdivers

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634

Discussions similaires

  1. Renvoyer un type structuré dans objet OLE
    Par Bleuarff dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/05/2005, 20h05
  2. [Language]Type d'un objet null
    Par Calambo dans le forum Langage
    Réponses: 8
    Dernier message: 26/04/2005, 10h06
  3. [POO] Comment connaître le type d'un objet
    Par zizou39 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/03/2005, 09h46
  4. [prog dynamique]Constructeur avec type primitif
    Par -=Spoon=- dans le forum Langage
    Réponses: 2
    Dernier message: 16/12/2004, 10h33
  5. Comment detecter le type d'un objet?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/06/2003, 15h23

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