徹底修改參數傳遞約定以進行最佳化
在最近的一次演講中,Herb Sutter 建議傳遞std::vector 和std: :string 物件const & 已經過時了。這說法引發了程式設計師之間的討論。
Sutter 的基本原理
Sutter 認為,在函數返回右值(即臨時物件)的情況下,傳遞輸入按值參數允許使用移動語義進行更有效的處理。這可以避免不必要的複製或記憶體分配。
考慮以下程式碼片段:
按值傳遞 inval 允許函數直接修改並傳回值,因此無需複製建構子。
關於的擔憂效率
批評者認為,由於移動對象的開銷,按值傳遞像 std::string 這樣的大型對象仍然效率低下。 std::string 執行個體由多個元件組成,包括堆疊指標和用於短字串最佳化的成員 char[]。
參考參數的參數
儘管由於潛在的低效率,參考參數的支持者認為它們提供了幾種好處:
結論
結論結論結論選擇透過const & 還是透過值傳遞物件取決於特定的用例。在效率至關重要且函數對右值進行操作的情況下,使用移動語意傳遞值可以提供效能優勢。然而,在封裝、簡單性或所有權管理很重要的情況下,參考參數仍然很有價值。以上是我們也應該透過 `const &` 傳遞 `std::string` 和 `std::vector` 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!