重新思考C 11 中的值傳遞
在C 世界中,傳統上不鼓勵大規模使用值傳遞由於效能問題而產生的對象。然而,C 11 中右值引用和移動建構函數的引入為高效傳遞物件開闢了新的可能性。
以值傳遞現在是最佳預設值嗎?
根據行業專家 Dave Abrahams 的說法,如果需要在函數體內進行複製,則按值傳遞 std::vector 和 std::string 等大型物件是合理的。這允許編譯器執行最佳化,消除了程式設計師明確複製的需要。
優點:
自訂對象:
對於自訂對象,透過引用傳遞const 仍然是一個可行的選項,因為它提供靈活性並最大限度地減少無意修改原始物件的風險。
最佳實踐:
範例:
要實作推薦模式,值建構子可以寫如下:
class T { U u; V v; public: T(U u, V v) : u(std::move(u)) , v(std::move(v)) {} };
以上是現代 C 中大物件應該預設值傳遞嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!