221Fermer223
Kevin KoflerLe 12/01/2010 à 07:55
Attention, les objets implicitement partagés de Qt ont quand-même un comportement très différent des simples références dont il est question ici. Et Qt ne cache les pointeurs que quand il ne s'agit que d'un détail d'implémentation qui n'a aucun effet sur le comportement. Par exemple, un QString (implicitement partagé) se comporte comme un simple int, c'est juste que la copie est retardée jusqu'à la première écriture, ce qui évite de recopier un gros objet pour rien. Mais un objet qui représente un vrai objet avec un comportement (ou, ce qui est équivalent dans la logique de Qt: avec des évènements (signaux et/ou slots)), pas de simples données, est toujours traîté comme un pointeur. (QObject n'est volontairement pas implicitement partagé!) Et Qt évite le passage par référence non-const, parce que ça cache le fait que la fonction a accès au pointeur et peut modifier la variable, alors que const & est utilisé souvent en tant qu'optimisation qui ne change pas la sémantique.