值和 Rvalues
每個 C++ 運算式可以是左值。左值指的是持續出現超過單一運算式的物件。您可以想像左值的物件名稱。所有的變數,包括不可修改 (const) 變數的值。將變數是暫時的值,不會保留超過它所使用的運算式。若要進一步瞭解的值和 rvalues 之間的差異,請考慮下列的範例:
// lvalues_and_rvalues1.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
int x = 3 + 4;
cout << x << endl;
}
在這個範例中, x是左值,因為它持續出現超過定義它的運算式。運算式3 + 4會將變數,因為它會評估為暫時的值,不會保留超過定義它的運算式。
下列範例會示範數種正確及不正確的使用方式的值和 rvalues:
// lvalues_and_rvalues2.cpp
int main()
{
int i, j, *p;
// Correct usage: the variable i is an lvalue.
i = 7;
// Incorrect usage: The left operand must be an lvalue (C2106).
7 = i; // C2106
j * 4 = 7; // C2106
// Correct usage: the dereferenced pointer is an lvalue.
*p = i;
const int ci = 7;
// Incorrect usage: the variable is a non-modifiable lvalue (C3892).
ci = 9; // C3892
// Correct usage: the conditional operator returns an lvalue.
((i < 3) ? i : j) = 7;
}
注意事項 |
---|
運算子不會多載時,本主題中的範例說明了正確及不正確的使用方式。多載運算子,您可以讓運算式類似j * 4左值。 |
條款左值使用 和 右值參考物件的參考時,通常用。如需有關參考的詳細資訊,請參閱左值使用參考宣告子: &和右值參考的宣告子: & &。