我有一个关于std :: shared_ptr的非常基本的问题。如果我有一些将std :: shared_ptr作为函数参数传递的首选方式是什么?
std::shared_ptr<A> p;
,其中A类的一些在我的代码中定义的,什么是传递这个性病的首选方式:: shared_ptr的作为函数参数?它使一个有意义的定义我的功能,做一些与A级这样的实例:
void func(A &a);
,并通过* p来这些功能,然后将“一个”回的std :: shared_ptr的有shared_from_this()如果需要的话?有没有理由这样做,常见的做法是什么?或者我应该通过shared_ptr的为这样的说法:
void func(std::shared_ptr<A> p); //thread safe
void func(const std::shared_ptr<A> & p); //not thread safe
在我的项目,我可以使用这两种方案中的大部分功能,但我的同事说,第一种选择是更好,因为基准(A &)总是比指针(shared_ptr或A *)更好,因为引用语义意味着参数不为null。
可能重复的[我应该通过共享\ _ptr通过引用?](https://stackoverflow.com/questions/8385457/should-i-pass-a-shared-ptr-by-reference) – syntagma
不完全因为这并没有真正解决第一种选择(通过引用传递指出),但肯定包含了一些适当的思想。 –