• # Un temporaire en plus

    Posté par . En réponse au journal Le quiz c++ de l'été. Évalué à 6.

    Les trois premiers appels se contentent de passer un pointeur (une référence c'est pointeur caché) et sont donc aussi rapides l'un que l'autre. g(shr_b) a besoin de créer un temporaire de type shared_ptr<A> et une copie de shared_ptr est coûteuse à cause de l'état partagé.

    En pratique, si g n'a pas besoin de posséder la ressource, il faut mieux utiliser pointeur nu ou un weak_ptr. Si g a besoin de la posséder, il faut mieux passer le shared_ptr par valeur: il y a une copie au moment de l'appel dans tous les cas, mais on peut le déplacer par le suite si besoin.