Aracılığıyla paylaş


Lvalues ve Rvalues

Her C++ bir lvalue veya bir rvalue ifadesidir.Bir lvalue tek bir ifade devam ederse bir nesneye başvurur.Bir lvalue bir ada sahip bir nesne olarak düşünebilirsiniz.Nonmodifiable de dahil olmak üzere tüm değişkenleri (const) değişkenlerdir, lvalues.Bir rvalue, onu kullanan deyimi kalıcı değil geçici bir değerdir.Lvalues ile rvalues arasındaki fark daha iyi anlamak için aþaðýdaki örneði ele alalým:

// lvalues_and_rvalues1.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
   int x = 3 + 4;
   cout << x << endl;
}

Bu örnekte, x onu tanımlayan ifadeyi devam ederse bir lvalue çünkü.İfade 3 + 4 onu tanımlayan ifadeyi kalıcı değil geçici bir değeri değerlendiren bir rvalue çünkü.

Aşağıdaki örnek, lvalues ve rvalues birkaç doğru ve yanlış kullanımı gösterilmektedir:

// 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;
}

[!NOT]

Operatörler değil aşırı yüklü olduğunda doğru ve yanlış kullanımı bu konudaki örneklerde gösterilmektedir.Operatörler aşırı tarafından bir ifade gibi yapabileceğiniz j * 4 bir lvalue.

Şartları lvalue ve rvalue nesne başvurularını için başvurduğunuzda sık sık kullanılır.Başvurular hakkında daha fazla bilgi için bkz: Lvalue başvuru Bildiricisi: & ve Rvalue başvuru Bildiricisi: & &.

Ayrıca bkz.

Başvuru

Temel kavramlar

Lvalue başvuru Bildiricisi: &

Rvalue başvuru Bildiricisi: & &