-
Création d'objets
Bonjour,
je debute c++/Qt et j'etudie les concepts de c++ (pointeur,...)
j'ai vu qu'on pouvait creer un objet qt de 2 facons :
1) QLabel *label = new QLabel("Hello");
2) QLabel label("Hello");
Est ce rigoureusement la même chose? y a t il une convention qui vaille mieux une methode que l'autre?
Merci
-
:salut:
La différence est l'allocation sur la pile ou sur le tas : avec new, tu es sur le tas ; sans, sur la pile.
La différence est de taille, en réalité : dans le premier cas, tu n'as qu'un pointeur sur l'objet ; dans le second, tu as une référence. À la sortie du scope, le pointeur est détruit, pas ce qu'il contient, l'objet sur lequel tu as une référence est lui détruit.
En pratique : les pointeurs, c'est LE mal. Tant que tu peux éviter de les utiliser, fais-le. La raison est déjà explicitée : il faut bien à un moment qu'ils soient détruits. Avec Qt, c'est plus simple, si du moins tes objets héritent de QObject et qu'ils ont un parent : dès que le parent est détruit, tous ses enfants sont détruits, jusqu'au dernier. Sans parent, ils ne sont détruits que quand c'est demandé explicitement (delete).
-
Merci pour cette explication claire! viva belgium ;) a++