Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 4


|
Conversation (Résolue) : Question de constructeur |
Claude (Membre)
Inscrit le : 16-02-2011
Messages: 14
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour, 
Malgré mes recherches sur internet, la doc wxWidgets et mes bouquins sur le C++, je n'ai pas trouvé de réponse à la question qui va suivre...
Mais peut-être, l'ai-je mal posée ou mal cherché...
Qu'elle est la différence entre:
Code wxWidgets:myFrame::myFrame(wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style) { Create(parent, id, caption, pos, size, style); }
et
Code wxWidgets:myFrame::myFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style) :wxFrame(parent, id, title, pos, size, style ) { }
Les deux fonctionnent, bien évidement, mais qu'elle est la plus judicieuse et pourquoi??
D’avance je vous remercie pour le temps que vous saurez consacrer à ma demande.
Bien à vous.
Claude
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1387
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Il n'y a à mon avis pas de différence "cruciale" entre les deux formes. Lorsque tu utilises la première forme, le constructeur de wxFrame appelle la méthode "Create" de cette dernière. Lorsque tu utilises la deuxième forme, c'est toi qui l'appelle directement.
Et je dirais également qu'il n'y en a pas forcément une qui soit plus judicieuse que l'autre.
Je ne vois qu'un seul cas qui pourrait te "forcer" à utiliser la deuxième plutôt que la première : ça serait le fait d'avoir à faire quelques initialisations avant d'appeler la méthode Create (chose qui n'est pas possible avec la première forme car quand ton constructeur démarre, cette méthode a déjà été appelée).
Pour ma part, j'utilise la première forme la plupart du temps (mais c'est plus par habitude que par nécessité).
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
Claude (Membre)
Inscrit le : 16-02-2011
Messages: 14
Snippets: 0
Tutoriels: 0
Hors ligne |
Salut,
Un grand merci pour cette réponse claire, nette, précise et défiant toute concurrence quant à la rapidité d'exécution.. 
@++
Claude
Dernière modification par Claude (24-05-2012 18:25:35)
|
|
Warzer (Membre)
Inscrit le : 05-10-2007
Messages: 284
Snippets: 4
Tutoriels: 0
Hors ligne |
Salut,
En faites, il y a une petite différence tout de même. Elle sera plutôt minime dans un cas simple, c'est une question d'optimisation de ressources mémoire et processeur, ça se verra si tu fais 500.000 initialisation à la suite et dans ce cas la, la liste d'initialisation sera plus rapide et moins gourmande (c'est la 2eme forme dans ton example) si tu veux comprendre plus en détail, je te renvoie vers ce lien:
Mes constructeurs doivent-ils utiliser les listes d'initialisation ou l'affectation ?
Voilà à plus.
Dernière modification par Warzer (05-06-2012 12:02:51)
|
|
Claude (Membre)
Inscrit le : 16-02-2011
Messages: 14
Snippets: 0
Tutoriels: 0
Hors ligne |
Salut,
Warzer: Merci pour ce complément d'information et ce lien très intéressant.
|
|
|