c 右值引用

2021-10-18 06:14:41 字數 1110 閱讀 7564

1.左值、右值

c++中所有的值都必然屬於左值、右值二者之一。左值是指表示式結束後依然存在的持久化物件,右值是指表示式結束時就不再存在的臨時物件。所有的具名變數或者物件都是左值,而右值不具名。很難得到左值和右值的真正定義,但是有乙個可以區分左值和右值的便捷方法:看能不能對表示式取位址,如果能,則為左值,否則為右值

2..左值引用、右值引用

所以,左值引用只能繫結左值,右值引用只能繫結右值,如果繫結的不對,編譯就會失敗。但是,常量左值引用卻是個奇葩,它可以算是乙個「萬能」的引用型別,它可以繫結非常量左值、常量左值、右值,而且在繫結右值的時候,常量左值引用還可以像右值引用一樣將右值的生命期延長,缺點是,只能讀不能改。

總結一下,其中t是乙個具體型別:

左值引用, 使用t&, 只能繫結左值右值引用, 使用t&&, 只能繫結右值常量左值, 使用const t&, 既可以繫結左值又可以繫結右值已命名的右值引用,編譯器會認為是個左值編譯器有返回值優化,但不要過於依賴

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

c 裡一切值必須屬於左值 右值兩者之一。左值 一切變數 包括用const修飾的變數 物件 包括引用都屬於左值 右值 一切字面值 可以是巨集 臨時無名物件 函式返回值 表示式 如a n 說明一下 函式返回值,返回的是某乙個型別的值,並不是返回變數。左值並不是說能放在 左邊的值就是左值 雖然用const...

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

在c語言中,左值認為是賦值語句的左側,右值認為是賦值語句的右側。在c 中,意義稍有不同。c 中,每乙個表示式會產生乙個左值或者右值,相應的,該表示式也就被稱作 左值表示式 右值表示式 乙個左值表示式的求值結果是乙個物件或者是乙個函式。左值可以當右值使用,而右值不能當左值使用。c prime 中這麼簡...

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

就變數而言,對於一些變數,我們只會讀取並使用它們的值,而不會改變他們的值 唯讀 對於其餘的變數,我們既會讀取它們的值,有的時候還會改變它們的值 讀寫 這是很常見的。在c 中,前一種變數稱為右值,後一種變數稱為左值,例如 int a 1 a是左值,1是右值稍稍不同的一點是,在c 中,乙個變數是左值還是...