jtleepp
jtleepp
JTLeePP
1 post
Got a job need C++ for the summer of 2023. While my C and OS knowledge is pretty good, my C++ could use some work. This is just me ranting to myself about the oddities of C++ in an attempt to solidfy my knowledge.
Don't wanna be here? Send us removal request.
jtleepp · 3 years ago
Text
lvalues and rvalues
The topic that inspired me to create this page, lvalues and rvalues. These rs and ls stand for left and right, referring to the side of in an assignment that value would be expected to occur.
A lvalue is a variable. You would expect this to live in the heap or stack, and it's address should be viewable with the reference of unary operator (&).
On the other hand (side of the expression), a rvalue is easiest to think of as a literal. They do not have a memory address that can be stored. Literals are the example of this I gave, but return values of functions also fit this category. So I guess that means they live in the stack or text? Seems odd to me.
Anyway, the real question is why are these useful. And it's because you can overload functions to handle these cases separately. probably other reasons as well. If you are writing a sorting function that doesn't want to modify the array passed to it, but you could increase efficiency if you did, you know with a rvalue you can modify the array in-place. Neat.
Now the function that sent me down this rabbit hole, std::move. Gotta go figure out what it does.
4 notes · View notes