傳遞共享指標:按引用或按值
調用接受共享指標的函數時,開發人員面臨傳遞共用指標的選擇const 引用或按值。雖然出於性能原因,透過 const 引用傳遞似乎更可取,但該決定值得進一步考慮。
根據 2011 C and Beyond「Ask Us Anything」會議上的專家的說法,傳遞共享指針通常沒有任何優勢按價值。建議的方法是透過 const 引用傳遞,除非目的是共享物件的所有權。
為什麼透過 const 引用傳遞?
透過 const 參考傳遞可確保共用指標在函數內保持不可變,保留其值並防止意外修改。這與共享指標的預期行為一致,共享指標象徵著物件的共享所有權。
為什麼不按值傳遞?
雖然按值傳遞可能會建立一個共享指標的副本,現代 C 編譯器優化了底層託管物件的不必要的重複。只有當共享指標可以進行行動最佳化時,按值傳遞才會變得有益,從而允許將託管物件的所有權轉移到函數而不進行複製。然而,這種優化取決於所使用的特定 C 版本。
其他注意事項
2012 年 GoingNative「詢問我們任何問題」小組進一步詳細闡述了此主題。討論的關鍵要點包括:
以上是我應該透過引用還是透過值傳遞共享指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!