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_ptrmembro 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!)