首頁  >  文章  >  後端開發  >  C 中的通用引用和轉發引用有什麼區別?

C 中的通用引用和轉發引用有什麼區別?

Patricia Arquette
Patricia Arquette原創
2024-11-17 09:29:03973瀏覽

What's the Difference Between Universal References and Forwarding References in C  ?

通用和轉發引用:全面解釋

在 C 語言中,程式設計師經常使用引用將資料傳遞給函數。將函數參數定義為右值參考時(例如,void f(int && i)),函數參數將綁定到右值參考。相反,宣告為 T && 的模板函數參數t 可以綁定到右值或左值引用。

這兩種參數類型引發了討論,有些人稱之為“通用引用”,有些人稱之為“轉發引用”。

通用引用與轉發引用

術語「通用引用」最初由Scott Meyers 創造,用於描述對cv 不合格模板參數的右值引用的能力將自身推導為值或左值參考。然而,C 17 引入了一個新術語:「轉發引用」。

根據 C 標準,「轉發引用」被定義為 cv 不合格模板參數的右值引用。當函數參數為左值時,類型「對 A 的左值引用」用於類型推導。

因此,通用引用和轉發引用是同義詞,目前 C 標準中首選術語是「轉發」引用。 ”

轉送參考和std::forward()

函數std::forward() 將其參數轉送到另一個函數或函數物件。它通常用於保留參數的類型,特別是當參數是通用參考時。並不是參數被視為轉發引用的必要條件。值或左值引用,為程式碼開發提供便利性和靈活性。

以上是C 中的通用引用和轉發引用有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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