C++ vocabulary for beginners.
source link: https://dev.to/baenencalin/c-vocabulary-for-beginners-4nlj
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
When I first joined C++, I was confused about some terminology, but now that I've looked it up, I understand now.
I'm here to share my wisdom in the form of a compilation of phrases I've learned.
lvalue
and rvalue
An lvalue, or properly cased, "LValue", stands for "Left Value". Same with "RValue"; it means "Right Value".
A left value is any bit of code that can go on the left side of an expression, and is strictly limited to only being that left-hand of the expression.
Here's an example:
int const x = 10; // `x` is an lvalue, and `10` is an rvalue.
int y = 20; // `y` lvalue, `20` rvalue.
y = y+x; // `y` is an lvalue, `y+x` is an rvalue.
// `y+x` is an rvalue because you can't do
// `int x+y = value`.
reference
, lvalue reference
, and rvalue reference
.
A reference is a tool that's used to pass a variable (or its value) around.
Consider the following:
void updateYear(int& y) {
y = 2021;
}
int year = 2006;
updateYear(year);
std::cout << year; // Prints `2021`.
They're basically similar to pointers (T* name
), except they're dereferenced when applicable, and are ensured never to be a null
-like value.
What's an lvalue reference? - Well, it's not hard to explain, it's what you you just witnessed.
Reference usually refers to any reference, it's not specific, but before rvalues were added to C++ (in C++11), "reference" referred to the only kind of references that existed, lvalue references.
Copy constructor.
It's exactly what it sounds like, a constructor that copies.
What does it copy? Another instance of the same type.
It creates a new instance of a type using an old instance.
Here's an example:
struct Point {
// The following constructor is a "copy constructor"
// because it takes an argument of type `Point`,
// which is the same type as the class it's in.
// (NOTE: Copying data from `p` isn't a requirement
// for a copy-constructor, but doing otherwise
// defeats the purpose of having `p`.)
Point(Point p) {
// I'm not using a member-initializer list to
// be beginner friendly.
// More people know `this.name`/`this->name` syntax.
this->x = p.x;
this->y = p.y;
}
int x = 0;
int y = 0;
}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK