Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] Constructeur surchargé VS arguments facultatifs

Sujet résolu
Anonyme
    29 mars 2008 à 15:11:09

    A la fin du chapitre 3 de la partie 2 du cours de C++, M@teo dit :

    Citation : M@teo21

    Petit exercice : essayez de modifier (ou de surcharger) le constructeur de la classe MaFenetre pour qu'on puisse lui envoyer en paramètre la largeur et la hauteur de la fenêtre à créer.
    Ainsi, vous pourrez alors définir les dimensions de la fenêtre lors de sa création dans le main.

    J'ai donc réalisé cela :
    MaFenetre.h :
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
     
    class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
    {
    public:
        MaFenetre(int largeur = 300, int hauteur = 150);
        
    private:
        QPushButton *m_bouton;
    };
     
    #endif
    

    MaFenetre.cpp :
    MaFenetre::MaFenetre(int largeur, int hauteur) : QWidget()
    {
        setFixedSize(largeur, hauteur);
        
        // Construction du bouton
        m_bouton = new QPushButton("Pimp mon bouton !", this);
        
        m_bouton->setFont(QFont("Comic Sans MS", 14));
        m_bouton->setCursor(Qt::PointingHandCursor);
        m_bouton->setIcon(QIcon("smiley.png"));
        m_bouton->move(60, 50);
    }
    

    J'ai donc fait un constructeur à argument facultatifs. Faudrait-il mieux le surcharger ?
    Merci d'avance pour vos réponses :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      29 mars 2008 à 15:33:53

      Dans ce cas, on peut substituer l'un à l'autre.
      Dans la plus part des cas, on ne peut pas et il n'y a donc pas de raison de les opposer.

      C'est du cas par cas.
      • Partager sur Facebook
      • Partager sur Twitter
        29 mars 2008 à 15:36:13

        La réponse est oui et non.

        En mettant des paramètres par défaut tu autorises en réalité 3 constructeurs:

        MaFenetre a;
        MaFenetre a(100);
        MaFenetre a(100,200);

        Or, je ne suis pas sûr que tu aies voulu créer le deuxième et surtout je ne suis pas sûr qu'il ait un sens. Ce n'est pas une erreur mais il faut en avoir conscience. Si tu surcharges le constructeur, tu ne laisses la possibilité à l'utilisateur d'utiliser uniquement la première et la troisième version du constructeur et plus la deuxième.
        A toi de choisir.

        Au passage, j'aurais mis des unsigned int à la place des int. La largeur et la hauteur d'une fenêtre sont toujours positifs.
        • Partager sur Facebook
        • Partager sur Twitter
        Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        Anonyme
          29 mars 2008 à 15:37:37

          Merci pour vos réponses :)
          • Partager sur Facebook
          • Partager sur Twitter

          [Qt] Constructeur surchargé VS arguments facultatifs

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown