2

C++ vocabulary for beginners.

 2 years ago
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.
neoserver,ios ssh client

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`.
Enter fullscreen modeExit fullscreen mode

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`.
Enter fullscreen modeExit fullscreen mode

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;
}
Enter fullscreen modeExit fullscreen mode

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK