引數中的右值以及左值引用

2021-08-20 04:49:54 字數 390 閱讀 8138

乙個模板函式f(t1&&,t2&),兩個形參分別為右值以及左值

呼叫函式:f(42,i):t1型別為int,t2型別為int

呼叫函式:f(i,42):t1型別為int&,但編譯錯誤,因為無法將左值引用繫結到右值上

標準庫forward模板函式:將引數轉換為t&&型別,對於一些引數為左值引用或右值的函式,可以利用forward函式轉換實參。remove_reference函式將t去除引用,成員remove_reference::type即為剝離t的引用的型別。

std::move()函式將引數轉換為右值型別

總結:將乙個模板函式聲名為右值型別,可以完好的儲存實參型別,注意到一點,f(i,42)的呼叫,i為&,則t1實際上型別應為&& &,引用摺疊為&。同理對於&& &&,引用摺疊為&&。

左值 右值 左值引用 右值引用

2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...