J'ai quelques précisions concernant la programmation Qt. Dans Qt la plupart du temps, nous instancions un widget en allouant dynamiquement la mémoire.dans Qt nous utilise plus de pointeurs, y at-il des avantages?
Y a-t-il des avantages à faire ça de Qt prospective? et qu'en est-il de la désallocation de la mémoire pour le widget? avons-nous besoin d'appeler manuellement la suppression pour la mémoire allouée ou les poignées Qt?
Exemple
QListView *newlist = new QListView(); //This is good? if so why?
QListView newlist; // why not this?
@frank, Merci pour la réponse. une chose que je ne reçois pas dans votre description est "ils ne peuvent pas être assignés ni copiés" Qu'est-ce que ça dit exactement, ne pouvons-nous attribuer des valeurs, ne pouvons-nous les copier en utilisant des constructeurs de copie? – Naruto
@Shadow: Ni la copie ctor ni l'opérateur = sont privés pour QObjects. C'est pourquoi ils sont passés en tant que pointeurs. Les QObjects ne sont pas des valeurs, ils ont une "identité". Même si vous implémentez par ex. operator = pour une sous-classe, assigner un QObject à un autre casse la sémantique. Par exemple, les connexions signal/emplacement ne sont pas copiées. –
@Frabk, j'ai analysé http://doc.trolltech.com/4.5/shared.html#overview ici attentivement, j'ai trouvé un doute de plus. QPixmap p1, p2; p1.load ("image.bmp"); p2 = p1; // p1 et p2 partagent des données ici p2 et p1 sont partagés à partir de la prospective Qt mais pas du droit prospectif du programmeur. en général, l'attribution d'un objet à un autre conduit à la copie en profondeur à droite? mais Qt dit que ce sera une copie superficielle .. et si je change la valeur de p2 ici? – Naruto