Maison > Article > développement back-end > Dois-je transmettre « shared_ptr » par valeur ou par référence ?
Passer des pointeurs partagés : par référence ou par valeur
Lors du passage d'un shared_ptr (depuis boost ou C 11 STL) à une fonction, le le choix entre le passer par référence const (void foo(const shared_ptr
Traditionnellement, il On pensait que le passage par référence serait plus rapide car cela éviterait les opérations de copie inutiles. Cependant, comme l'ont discuté les experts de C and Beyond 2011 (Scott, Andrei et Herb), ce n'est plus le cas.
Devriez-vous passer par valeur ou par référence ?
À moins qu'il n'y ait un besoin explicite de partager la propriété d'un objet (comme entre des structures de données ou des threads), il n'y a aucune raison impérieuse de transmettre un shared_ptr par valeur. Le passage par référence const est préférable pour les raisons suivantes :
Quand transmettre par valeur
La seule fois où il est conseillé de transmettre un shared_ptr par valeur est lorsque l'intention est de transférer la propriété de l'objet à la fonction. C'est généralement le cas lorsque la fonction doit assumer la responsabilité de la gestion de la durée de vie de l'objet.
Considérations supplémentaires
Pour des performances optimales, il est important de déterminer si le shared_ptr peut être optimisé pour les déplacements. Comme l'explique Scott Meyers, l'optimisation des déplacements peut éliminer le besoin d'opérations de copie inutiles. Cependant, cette optimisation n'est disponible que dans certaines versions de C .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!