Quando una funzione prende un shared_ptr
(da boost o C ++ 11 STL), la stai passando:
per riferimento const:
void foo(const shared_ptr<T>& p)
o per valore
void foo(shared_ptr<T> p)
:?
Preferirei il primo metodo perché sospetto che sarebbe più veloce. Ma ne vale davvero la pena o ci sono altri problemi?
Potresti per favore fornire i motivi della tua scelta o, nel caso, perché pensi che non abbia importanza.
shared_ptr
membro della classe. Lo fai con const-refs?
shared_ptr
, e posso cambiarlo se voglio.", Mentre la versione del valore dice "Ho intenzione di copiare il tuoshared_ptr
, quindi mentre posso cambiarlo non lo saprai mai. ) Un parametro const-reference è la vera soluzione, che dice "Vado ad alias alcunishared_ptr
, e prometto di non cambiarlo." (Che è estremamente simile alla semantica per valore!)