共用方式為


值和 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左值。

條款左值使用 和 右值參考物件的參考時,通常用。 如需有關參考的詳細資訊,請參閱左值使用參考宣告子: &右值參考的宣告子: & &

請參閱

參考

基本概念

左值使用參考宣告子: &

右值參考的宣告子: & &