C 11 引入了右值引用和移動語義,透過避免不必要的複製和優化物件創建來增強效能。了解這些技術之間的差異對於編寫高效的程式碼至關重要。
考慮以下 C 11 程式碼範例:
第一個範例:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> &&rval_ref = return_vector();
第二例:
std::vector<int>&& return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
第三個示例:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
第一個例子:
第二個範例:
這表示 tmp 被移到回傳值中,現在 rval_ref持有有效的右值參考。
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> rval_ref = return_vector();最佳實踐推薦方式返回一個臨時物件作為僅移動左值引用(例如,std::vector
以上是右值引用和移動語意如何影響 C 11 返回語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!