我有一個關於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
不完全因爲這並沒有真正解決第一種選擇(通過引用傳遞指出),但肯定包含了一些適當的思想。 –