Bonjour,
Je m'intéresse depuis peu à QT, il m'a semblé que le fonctionnement de certains objets de base (QString) rendait leur retour et leur passage par copie adapté à la plupart des situations.
A ce que j'ai compris, ces opérations se font d'une manière comparable aux shared_ptrs, avec un compteur de référence. Tout semble avoir été fait pour nous éviter de bosser avec des raw pointers et de trop se soucier de la fin de vie des objets.
Mais pour un cas plus compliqué dans lequel j'ai besoin de partager un QVector que je souhaite laisser modifier par d'autres fonctions, il semble que si la fonction qui reçoit le QVector fait la moindre opération non const dessus, ceci créera un nouveau QVector et celui de l'appelant restera inchangé. C'est pratique mais comment faire si c'est pas ce qu'on veut?
Je suppose que si je passe ces objets par référence ou par pointeur, je perds la sécurité quant à la destruction automatique si la référence est stockée et dépasse l'objet ou la méthode qui l'a créé en terme de durée de vie?
En gros serait-ce une situation dans laquelle un shared_ptr<std::vector> est plus intéressant qu'un QVector malgré tout?
Partager