首頁  >  文章  >  後端開發  >  在 C 中我應該透過引用還是透過值傳遞共享指標?

在 C 中我應該透過引用還是透過值傳遞共享指標?

Susan Sarandon
Susan Sarandon原創
2024-11-02 14:39:02831瀏覽

Should I Pass shared_ptrs by Reference or by Value in C  ?

傳遞Shared_Ptrs:引用與值

在C 中,當傳遞一個共享指標(boost 實作或C 11 STL)時,開發人員可以選擇透過引用或透過值傳遞它。問題來了:哪種方法比較適合?

常數引用方法

透過 const 引用傳遞 (void foo(const shared_ptr& p)) 沒有與按值傳遞相比,效能具有優勢。 C 語言傑出人物 Scott Meyers、Andrei Alexandrescu 和 Herb Sutter 在 C and Beyond 2011 的“Ask Us Anything”會議上解決了這種誤解。

以值方式傳遞

以值傳遞(void foo(shared_ptr p)) 通常是首選,原因有二:

  1. 沒有不必要的開銷:按值傳遞可以避免建立臨時引用,否則會帶來不必要的開銷。
  2. 語意一致性:按值傳遞與其他容器類型(例如向量、列表)的語意一致,避免編碼實踐中的混亂.

替代方法

但是,在需要共享所有權的特定場景中,可能需要按值傳遞。例如,當在資料結構或執行緒之間轉移所有權時,按值傳遞可以促進所有權轉移,同時確保正確的記憶體管理。

結論

一般來說,傳遞const 引用的shared_ptr 沒有提供明顯的效能優勢,因此不建議使用。按值傳遞是首選方法,可確保一致性並避免不必要的開銷。

以上是在 C 中我應該透過引用還是透過值傳遞共享指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn